//save和restore是为了剪切操作不影响画布的其它元素
canvas.save();
Rect rect = new Rect(0,0,100,100);
Rect clipRect = new Rect(0,0,50,50);
//将剪切矩形与要下面要画的矩形相交,只显示相交的区域
canvas.clipRect(clipRect);
//将剪切矩形与要下面要画的矩形相交,不显示相交的区域
//canvas.clipRect(clipRect,Op.XOR)
canvas.drawRect(rect, paint);
canvas.restore();
//INTERSECT 取两者交集,默认的方式
//DIFFERENCE 第一次不同于第二次的部分显示出来
//REPLACE 显示第二次的
//REVERSE_DIFFERENCE 第二次不同于第一次的部分显示
//UNION 取全集
//XOR 补集,就是全集的减去交集的剩余部分显示
效果图:
不剪切
![](http://static.oschina.net/uploads/space/2013/0611/172723_XPzw_232612.gif)
canvas.clipRect(clipRect)
canvas.clipRect(clipRect,Op.XOR)