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应用中创建和使用剪切图动画。 剪切图动画的基本原理是利用Android提供的Canvas类的clipRect()方法,这个方法...
2. **Android中的Clipping API**: - `Canvas.clipRect()`:这个方法用于设置当前Canvas的剪切区域,只允许在指定矩形内进行绘制。可以接受多个参数,如矩形的左上角和右下角坐标,或者直接使用Rect对象。 - `View...
在Android开发中,剪切图动画(Clipping Animation)是一种常用的技术,用于为用户界面增添动态效果,提高用户体验。此“Android剪切图动画Demo源码.rar”包含了一个实际的项目示例,可以帮助开发者深入理解如何在...
标题中的“ofdmwithclipping.zip_clipping_clipping”暗示了我们讨论的主题是OFDM信号处理中的一种特殊技术——幅度剪辑(Amplitude Clipping)。此技术主要用来降低OFDM信号的峰均功率比(Peak-to-Average Power ...
这份源码着重展示了如何在Android应用中实现剪切图(Clipping Animation)的效果,帮助开发者深入理解动画原理和实践。以下是关于这个主题的一些关键知识点: 1. **Android 动画系统**:Android提供了两种主要的...
在Android 5.X系列,谷歌引入了一种全新的设计语言——Material Design,这是一次重大更新,旨在提升用户体验,提供更加现代、直观且富有表现力的界面。本篇将重点解析Material Design中的几个关键新特性:主题...
Initialization....................................................................17 Section 2: Enter Game Loop............................................................17 Section 3: Retrieve ...
在Android开发中,剪裁(Clipping)是一种常见的图形处理技术,用于限制View或ViewGroup显示的区域。它可以帮助我们创建各种独特的视觉效果,比如隐藏部分视图、制作动画或者实现自定义布局。本篇文章将深入探讨...
"photo_clipping.zip"这个压缩包很可能包含了一个简单的Android图片裁剪应用示例,只需要两个Activity就能实现。下面我们将深入探讨Android图片裁剪的相关知识点。 首先,Android提供了多种方式来实现图片裁剪,...
标题中的"clipping_ber_my.rar_OFDM PAPR clipping_ber clipping_ofdm be"指的是一个关于OFDM(正交频分复用)系统中峰值平均功率比(Peak-to-Average Power Ratio,PAPR)降低技术的压缩包文件,具体是采用CLIPPING...
在Android开发中,剪切图动画(Clipping Animation)是一种常用的技术,用于为用户界面增添动态效果,提高用户体验。此压缩包"应用源码之(剪切图动画).zip"包含了一个示例项目,用于展示如何在Android应用程序中实现...
这个"Clipping Canvas Element - Polygon.zip"压缩包显然包含了关于如何使用Canvas API中的剪切(clipping)功能,特别是涉及到多边形(polygon)的应用。在游戏开发中,这种技术经常被用来创建复杂的游戏场景、动画...
3. **信号钳位(Clipping)**:这是一种简单而直接的硬件实现方法,通过在发射端对超过门限的信号幅度进行剪切,但可能引入额外的非线性失真。Clipping and Filtering-PAPR.m文件应该包含了这个过程的模拟,包括信号...
clipping.h
这个压缩包包含了一个名为"clipping-with-caps-master2"的子目录,很可能是一个示例项目,用于演示如何在Three.js场景中应用裁剪和剖切技术。 裁剪和剖切是3D图形处理中的关键技术。裁剪主要是指剔除那些超出视口...
资源分类:Python库 所属语言:Python 资源全名:clipping-1.4.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
GEE JavaScript API sentinel-1/2的训练教程
(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.
降低OFDM中PAPR的方法clipping的MATLAB源码