初次接触到 android 的 clip 有以下两点疑问:
1. Clip(剪切 )的时机
2. Clip 中的 Op 的参数的意思。
通常咱们理解的 clip(剪切 ),是对已经存在的图形进行 clip 的。但是,在 android 上是对 canvas
(画布)上进行 clip 的,要在画图之前对 canvas 进行 clip,如果画图之后再对 canvas 进行
clip 不会影响到已经画好的图形。一定要记住 clip 是针对 canvas而非图形。
接下来通过 android 自带的 APIdemo Clipping 例子详细讲述 Clip 中的 Op 的参数的意思。
Android 提供 clipRect、clipPath 和 clipRegion 剪切区域的 API。
Op 一共有 DIFFERENCE,INTERSECT,UNION,XOR, REVERSE_DIFFERENCE, REPLACE六种选择。
例子 :
1. 在 canvas上剪切从 (0,0)到(60,60)的方块。下图蓝色区域加紫色区域。
2. 在 canvas上剪切从 (40,40)到(100,100)的方块。下图橄榄色区域加紫色区域。
3. 在 canvas上剪切从 (0,0)到(100,100)的方块。
先在第二方块上加上 Op 参数例如: canvas.clipRect(40, 40, 100, 100, Region.Op. DIFFERENCE);
首先,需要搞清楚 Op 参数针对的对象。接着了解其含义。
Op 参数针对的对象是之前剪切的区域以及当前要剪切的区域。
在本例中涉及到区域是从 (0,0)到(60,60)的方块和从 (40,40) 到(100,100)的方块。
那有哪些含义呢?就是表示当前要剪切的区域与之前剪切过的之间的关系。
DIFFERENCE:之前剪切过除去当前要剪切的区域(蓝色区域) 。
INTERSECT:当前要剪切的区域在之前剪切过内部的部分(紫色区域) 。
UNION:当前要剪切的区域加上之前剪切过内部的部分 (蓝色区域 +紫色区域 +橄榄色区域) 。
XOR:异或,当前要剪切的区域与之前剪切过的进行异或。 (蓝色区域 +橄榄色区域) 。
REVERSE_DIFFERENCE:与 DIFFERENCE相反,以当前要剪切的区域为参照物,当前要剪切的
区域除去之前剪切过的区域 (橄榄色区域 );
REPLACE:用当前要剪切的区域代替之前剪切过的区域。 (橄榄色区域 +紫色区域 );
没带 Op 参数效果与 INTERSECT的效果一样,两个区域的交集。
Canvas
(100,100)