android的clip有以下兩點疑問:
Clip(剪下)的時機
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六種選擇。
例子:
在canvas上剪下從(0,0)到(60,60)的方塊。藍色地區加紫色地區。
在canvas上剪下從(40,40)到(100,100)的方塊。橄欖色地區加紫色地區。
在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的效果一樣,兩個地區的交集。