Canvas的clipXxx()方法

  Canvas提供了剪切区的功能,剪切区可以是一个Rect或者是一个Path,两个剪切区还能进行图形运算,得到更加复杂的剪切区。相关方法,如下:

//定义一个矩形的剪切区;
public boolean clipRect(float left, float top, float right, float bottom)
public boolean clipRect(float left, float top, float right, float bottom)
public boolean clipRect(@NonNull Rect rect)
public boolean clipRect(@NonNull RectF rect)

//定义一个Path剪切区;
public boolean clipPath(@NonNull Path path)

  剪切区还可以进行图形运算,剪切区的Op运算一共有6种,DIFFERENCE、INTERSECT、REPLACE、REVERSE_DIFFERENCE、UNION、XOR,如下:

1 . Op.DIFFERENCE:计算A和B的差集范围,即A - B,只有在此范围内的绘制内容才会被显示;

2 . Op.REVERSE_DIFFERENCE:计算B和A的差集范围,即B - A,只有在此范围内的绘制内容才会被显示;

3 . Op.INTERSECT:即A和B的交集范围,只有在此范围内的绘制内容才会被显示;

4 . Op.REPLACE:不论A和B的集合状况,B的范围将全部进行显示,如果和A有交集,则将覆盖A的交集范围;

5 . Op.UNION:A和B的并集范围,两者所包括的范围的绘制内容都会被显示;

6 . Op.XOR:A和B的补集范围,也就是先获取A和B的并集,再减去A和B的交集,只有在此范围内的绘制内容才会被显示;

  与剪切区Op运算相关的方法如下(Op是Region类的内部枚举类,但是这几个方法在Android 8.0源码中都不被建议使用了):

public boolean clipRect(float left, float top, float right, float bottom,@NonNull Region.Op op) 
public boolean clipRect(@NonNull Rect rect, @NonNull Region.Op op)
public boolean clipRect(@NonNull RectF rect, @NonNull Region.Op op)

public boolean clipPath(@NonNull Path path, @NonNull Region.Op op)

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-------------------last line for now-------------------