裁剪区域
裁剪是画布的一个函数,区域可以是矩形和圆形,也可以通过设置 path 或Region来显示自定义区域,通过不同组合,Android几乎可以支持任意现状的裁剪区域。
android.graphics包中定义了Point, Rect, Path, Region 这几种几何形状,Path可以为有圆弧,椭圆,二次曲线,三次曲线,线段,矩形等基本几何图形或是由这些基本几何图形组合而成,Path可以为开放或是闭合曲线。Rect提供了定义矩形的简洁方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
效果如下:
需注意的是 裁剪区域的函数是对 整个画布的操作 为了避免对其他绘制受到影响,需对画布save保存,裁剪完之后 restore复原
此外也可以通过Region来进行裁剪区域的划分 第三个参数比较复杂(在最后说明)
1 2 3 4 5 6 7 8 |
|
效果如下:
为了方便说明,把第一次clipRect的绘制范围设为A,第二次clipRect设定的范围设为B
- Op.DIFFERENCE,实际上就是求得的A和B的差集范围,即A-B,只有在此范围内的绘制内容才会被显示;
- Op.REVERSE_DIFFERENCE,实际上就是求得的B和A的差集范围,即B-A,只有在此范围内的绘制内容才会被显示;;
- Op.INTERSECT,即A和B的交集范围,只有在此范围内的绘制内容才会被显示;
- Op.REPLACE,不论A和B的集合状况,B的范围将全部进行显示,如果和A有交集,则将覆盖A的交集范围;
- Op.UNION,即A和B的并集范围,即两者所包括的范围的绘制内容都会被显示;
- Op.XOR,A和B的补集范围,此例中即A除去B以外的范围,只有在此范围内的绘制内容才会被显示