`

2011.10.10(2)——— android Clipping关于剪切

阅读更多
2011.10.11(2)——— android Clipping关于剪切

参考:http://wenku.baidu.com/view/67e1eed026fff705cc170ac1.html

代码如下:

package com.lp.clip;



import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Region;
import android.os.Bundle;
import android.view.View;

public class Clipping extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new SampleView(this));
    }
    
    private static class SampleView extends View {
        private Paint mPaint;
        private Path mPath;

        public SampleView(Context context) {
            super(context);
            setFocusable(true);
            
            mPaint = new Paint();
            mPaint.setAntiAlias(true);
            mPaint.setStrokeWidth(6);
            mPaint.setTextSize(16);
            mPaint.setTextAlign(Paint.Align.RIGHT);
            
            mPath = new Path();
        }
        
        private void drawScene(Canvas canvas) {
            canvas.clipRect(0, 0, 100, 100);
            
            canvas.drawColor(Color.WHITE);
            
            mPaint.setColor(Color.RED);
            canvas.drawLine(0, 0, 100, 100, mPaint);
            
            mPaint.setColor(Color.GREEN);
            canvas.drawCircle(30, 70, 30, mPaint);
            
            mPaint.setColor(Color.BLUE);
            canvas.drawText("Clipping", 100, 30, mPaint);
        }
        
        @Override protected void onDraw(Canvas canvas) {
            canvas.drawColor(Color.GRAY);            

            canvas.save();
            canvas.translate(10, 10);
            drawScene(canvas);
            canvas.restore();
            
            canvas.save();
            canvas.translate(160, 10);
            canvas.clipRect(10, 10, 90, 90);
            canvas.clipRect(30, 30, 70, 70, Region.Op.DIFFERENCE);
            drawScene(canvas);
            canvas.restore();
            
            canvas.save();
            canvas.translate(10, 160);
            mPath.reset();
            canvas.clipPath(mPath); // makes the clip empty
            mPath.addCircle(50, 50, 50, Path.Direction.CCW);
            canvas.clipPath(mPath, Region.Op.REPLACE);
            drawScene(canvas);
            canvas.restore();
            
            canvas.save();
            canvas.translate(160, 160);
            canvas.clipRect(0, 0, 60, 60);
            canvas.clipRect(40, 40, 100, 100, Region.Op.UNION);
            drawScene(canvas);
            canvas.restore();
            
            canvas.save();
            canvas.translate(10, 310);
            canvas.clipRect(0, 0, 60, 60);
            canvas.clipRect(40, 40, 100, 100, Region.Op.XOR);
            drawScene(canvas);
            canvas.restore();
            
            canvas.save();
            canvas.translate(160, 310);
            canvas.clipRect(0, 0, 60, 60);
            canvas.clipRect(40, 40, 100, 100, Region.Op.REVERSE_DIFFERENCE);
            drawScene(canvas);
            canvas.restore();
        }
    }
}



解释如下:

canvas.translate(160, 310);


表示 移动原点坐标






所以 可以看出来 每次绘图都是有两次的剪切方法的


运行结果 如下:



  • 大小: 9.6 KB
  • 大小: 47.1 KB
  • 大小: 27.3 KB
分享到:
评论

相关推荐

    安卓Android源码——(剪切图动画).rar

    这份"安卓Android源码——(剪切图动画).rar"压缩包很可能是包含了一个示例项目,用于展示如何在Android应用中创建和使用剪切图动画。 剪切图动画的基本原理是利用Android提供的Canvas类的clipRect()方法,这个方法...

    Android_API_Demo_Clipping

    2. **Android中的Clipping API**: - `Canvas.clipRect()`:这个方法用于设置当前Canvas的剪切区域,只允许在指定矩形内进行绘制。可以接受多个参数,如矩形的左上角和右下角坐标,或者直接使用Rect对象。 - `View...

    Android剪切图动画Demo源码.rar

    在Android开发中,剪切图动画(Clipping Animation)是一种常用的技术,用于为用户界面增添动态效果,提高用户体验。此“Android剪切图动画Demo源码.rar”包含了一个实际的项目示例,可以帮助开发者深入理解如何在...

    ofdmwithclipping.zip_clipping_clipping OFDM_clipping papr_clip

    标题中的“ofdmwithclipping.zip_clipping_clipping”暗示了我们讨论的主题是OFDM信号处理中的一种特殊技术——幅度剪辑(Amplitude Clipping)。此技术主要用来降低OFDM信号的峰均功率比(Peak-to-Average Power ...

    Android应用源码之(剪切图动画).zip

    这份源码着重展示了如何在Android应用中实现剪切图(Clipping Animation)的效果,帮助开发者深入理解动画原理和实践。以下是关于这个主题的一些关键知识点: 1. **Android 动画系统**:Android提供了两种主要的...

    Android 5.X 新特性详解(一)——主题、Palette、阴影、着色和裁剪

    在Android 5.X系列,谷歌引入了一种全新的设计语言——Material Design,这是一次重大更新,旨在提升用户体验,提供更加现代、直观且富有表现力的界面。本篇将重点解析Material Design中的几个关键新特性:主题...

    Tricks of the Windows video Game Programming---part1

    Initialization....................................................................17 Section 2: Enter Game Loop............................................................17 Section 3: Retrieve ...

    Android剪裁效果Clipping

    在Android开发中,剪裁(Clipping)是一种常见的图形处理技术,用于限制View或ViewGroup显示的区域。它可以帮助我们创建各种独特的视觉效果,比如隐藏部分视图、制作动画或者实现自定义布局。本篇文章将深入探讨...

    photo_clipping.zip

    "photo_clipping.zip"这个压缩包很可能包含了一个简单的Android图片裁剪应用示例,只需要两个Activity就能实现。下面我们将深入探讨Android图片裁剪的相关知识点。 首先,Android提供了多种方式来实现图片裁剪,...

    clipping_ber_my.rar_OFDM PAPR clipping_ber clipping_ofdm be

    标题中的"clipping_ber_my.rar_OFDM PAPR clipping_ber clipping_ofdm be"指的是一个关于OFDM(正交频分复用)系统中峰值平均功率比(Peak-to-Average Power Ratio,PAPR)降低技术的压缩包文件,具体是采用CLIPPING...

    应用源码之(剪切图动画).zip

    在Android开发中,剪切图动画(Clipping Animation)是一种常用的技术,用于为用户界面增添动态效果,提高用户体验。此压缩包"应用源码之(剪切图动画).zip"包含了一个示例项目,用于展示如何在Android应用程序中实现...

    Clipping Canvas Element - Polygon.zip

    这个"Clipping Canvas Element - Polygon.zip"压缩包显然包含了关于如何使用Canvas API中的剪切(clipping)功能,特别是涉及到多边形(polygon)的应用。在游戏开发中,这种技术经常被用来创建复杂的游戏场景、动画...

    OFDM_PAPR.rar_PAPR CCDF_clipping ofdm_ofdm clipping ccdf_papr pt

    3. **信号钳位(Clipping)**:这是一种简单而直接的硬件实现方法,通过在发射端对超过门限的信号幅度进行剪切,但可能引入额外的非线性失真。Clipping and Filtering-PAPR.m文件应该包含了这个过程的模拟,包括信号...

    clipping.h

    clipping.h

    clipping-with-caps-master.zip

    这个压缩包包含了一个名为"clipping-with-caps-master2"的子目录,很可能是一个示例项目,用于演示如何在Three.js场景中应用裁剪和剖切技术。 裁剪和剖切是3D图形处理中的关键技术。裁剪主要是指剔除那些超出视口...

    Python库 | clipping-1.4.0.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:clipping-1.4.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    S2_Clipping.js

    GEE JavaScript API sentinel-1/2的训练教程

    ques3.rar_The D.A._clipping matlab_image resizing

    (a) Image resizing into sizes 2X, 5X, 10X, 0.1X, 0.25X. (b) Image rotation with and without clipping in angles 100, 600, 900, 1100, 1500 (c) Image flipping in x and y axis. (d) Image zooming.

    clipping_ccdf.rar_PAPR CCDF_clipping matlab_ofdm clipping_ofdm

    降低OFDM中PAPR的方法clipping的MATLAB源码

Global site tag (gtag.js) - Google Analytics