本文实例讲述了Android canvas画图操作之切割画布实现方法。分享给大家供大家参考,具体如下:
android切割画布的历程不算很难,可是理解起来也比较麻烦,这里写一下我的理解 但是不一定正确:
canvas.clipRect(30,30,70,Region.Op.XOR);
最后一个参数有多个选择分别是:
//DIFFERENCE是第一次不同于第二次的部分显示出来
//REPLACE是显示第二次的
//REVERSE_DIFFERENCE 是第二次不同于第一次的部分显示
//INTERSECT交集显示
//UNION全部显示
//XOR补集 就是全集的减去交集生育部分显示
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.util.AttributeSet;
import android.view.View;
public class sBook extends View{
Context mContext;
Paint mPaint;
Path mPath;
public sBook(Context context) {
super(context);
init();
}
public sBook(Context context,AttributeSet attrs) {
super(context,attrs);
init();
}
public sBook(Context context,AttributeSet attrs,int defStyle) {
super(context,attrs,defStyle);
init();
}
private void init(){
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setStrokeWidth(6);
mPaint.setTextSize(16);
mPaint.setTextAlign(Paint.Align.RIGHT);
mPath = new Path();
}
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,Region.Op.XOR);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(10,160);
mPath.reset();
// canvas.clipPath(mPath); // makes the clip empty
// mPath.addCircle(50,50,Path.Direction.CCW);
mPath.cubicTo(0,100,100);
mPath.cubicTo(100,0);
canvas.clipPath(mPath,Region.Op.REPLACE);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(160,160);
canvas.clipRect(0,60,60);
canvas.clipRect(40,40,Region.Op.UNION);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(10,310);
canvas.clipRect(0,Region.Op.XOR);
drawScene(canvas);
canvas.restore();
canvas.save();
canvas.translate(160,Region.Op.REVERSE_DIFFERENCE);
drawScene(canvas);
canvas.restore();
}
private void drawScene(Canvas canvas) {
canvas.clipRect(0,100);
canvas.drawColor(Color.WHITE);
mPaint.setColor(Color.RED);
canvas.drawLine(0,mPaint);
mPaint.setColor(Color.GREEN);
canvas.drawCircle(30,mPaint);
mPaint.setColor(Color.BLUE);
canvas.drawText("Clipping",mPaint);
}
}
希望本文所述对大家Android程序设计有所帮助。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!