android canvas.clipRect的Region.Op.XOR使用
2013-12-04 12:12
489 查看
Region.Op有以下操作,类似于集合:
//DIFFERENCE是第一次不同于第二次的部分显示出来
//REPLACE是显示第二次的
//REVERSE_DIFFERENCE 是第二次不同于第一次的部分显示
//INTERSECT交集显示
//UNION全部显示
//XOR补集 就是全集的减去交集生育部分显示
用一个例子来测试如下:
package com.example.androidtest2;
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 MainActivity extends Activity {
@Override
public 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();
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.GRAY);
canvas.save();
canvas.translate(10, 10);
canvas.clipRect(0, 0, 100, 100);
canvas.clipRect(50, 50, 150, 150, Region.Op.XOR); //修改成对应的操作,就可以知道其作用了
canvas.drawColor(Color.WHITE);
canvas.restore();
}
}
}
源代码下载
http://yunpan.cn/QUXrTm9MYpzIG
//DIFFERENCE是第一次不同于第二次的部分显示出来
//REPLACE是显示第二次的
//REVERSE_DIFFERENCE 是第二次不同于第一次的部分显示
//INTERSECT交集显示
//UNION全部显示
//XOR补集 就是全集的减去交集生育部分显示
用一个例子来测试如下:
package com.example.androidtest2;
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 MainActivity extends Activity {
@Override
public 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();
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.GRAY);
canvas.save();
canvas.translate(10, 10);
canvas.clipRect(0, 0, 100, 100);
canvas.clipRect(50, 50, 150, 150, Region.Op.XOR); //修改成对应的操作,就可以知道其作用了
canvas.drawColor(Color.WHITE);
canvas.restore();
}
}
}
源代码下载
http://yunpan.cn/QUXrTm9MYpzIG
相关文章推荐
- Android中Canvas的clipRect参数Region.OP的理解
- Android中Canvas的clipRect参数Region.OP的理解
- Android Canvas Region.Op中的Clip方式
- Android画布使用Region.Op.XOR没有效果的原因
- 关于Canvas的clipRect (float left, float top, float right, float bottom, Region.Op op) 中Region.Op
- canvas的cliprect以及drawTextOnPath,Region.OP
- Android path.op 和canvas.clipPath使用一例
- Android Canvas Region.Op中的Clip方式
- android中canvas的clipRect和concate调用顺序不同导致的图像效果不同。
- android Canvas中的clipRect、drawBitmap
- android clipRect Op.xxx各个参数理解
- android canvas画图 切割画布(clipRect)
- android Canvas中的clipRect、drawBitmap
- android clipRect Op.xxx各个参数理解
- Android动画篇(三):canvas.clipRect 纠错篇
- Graphics->Clipping Canvas提供了ClipPath, ClipRect, ClipRegion 等方法来裁剪,通过Path, Rect ,Region 的不同组合,Androi
- android Canvas中的clipRect、drawBitmap
- android Canvas中的clipRect、drawBitmap
- android canvas画图 切割画布(clipRect)
- android课程:canvas画图 切割画布(clipRect)