path的op()方法是把自身和另外一条path中的区域做相应的处理,传入参数有5种模式
Path path1 = new Path();
path1.addCircle(150, 150, 100, Path.Direction.CW);
Path path2 = new Path();
path2.addCircle(200, 200, 100, Path.Direction.CW);
// DIFFERENCE -- 减去Path2后Path1区域剩下的部分
// INTERSECT --- 保留Path2 和 Path1 共同的部分
// UNION -- 保留Path1 和 Path 2
// XOR --- 保留Path1 和 Path2 去除共同的部分
// REVERSE_DIFFERENCE --- 减去Path1后Path2区域剩下的部分
path1.op(path2, Path.Op.DIFFERENCE);
canvas.drawPath(path1, mPaint);
-
DIFFERENCE -- 减去Path2后Path1区域剩下的部分

DIFFERENCE.jpg
-
INTERSECT --- 保留Path2 和 Path1 共同的部分

INTERSECT.jpg
-
UNION -- 保留Path1 和 Path 2

UNION.jpg
-
XOR -- 保留Path1 和 Path2 去除共同的部分

XOR.jpg
-
REVERSE_DIFFERENCE -- 减去Path1后Path2区域剩下的部分

REVERSE_DIFFERENCE.jpg
网友评论