@@ -255,7 +255,71 @@ INTERSECT | 交集 | Path1与Path2相交的部分 | ![]
255255UNION | 并集 | 包含全部Path1和Path2 | ![ ] ( http://ww2.sinaimg.cn/large/005Xtdi2gw1f43jbqk8rbj305k03cmx4.jpg )
256256XOR | 异或 | 包含Path1与Path2但不包括两者相交的部分 | ![ ] ( http://ww3.sinaimg.cn/large/005Xtdi2gw1f43jby8c60j305k03c0sp.jpg )
257257
258+ #### 布尔运算方法
258259
260+ 通过前面到理论知识铺垫,相信大家对布尔运算已经有了基本的认识和理解,下面我们用代码演示一下布尔运算:
261+
262+ 在Path中的布尔运算有两个方法
263+
264+ ``` java
265+ boolean op (Path path, Path . Op op)
266+ boolean op (Path path1, Path path2, Path . Op op)
267+ ```
268+
269+ 两个方法中的返回值用于判断布尔运算是否成功,它们使用方法如下:
270+
271+ ``` `java
272+ // 对 path1 和 path2 执行布尔运算,运算方式由第二个参数指定,运算结果存入到path1中。
273+ path1.op(path2, Path.Op.DIFFERENCE);
274+
275+ // 对 path1 和 path2 执行布尔运算,运算方式由第三个参数指定,运算结果存入到path3中。
276+ path3.op(path1, path2, Path.Op.DIFFERENCE)
277+ ```
278+
279+ #### 布尔运算示例
280+
281+ 
282+
283+ 代码:
284+
285+ ```
286+ int x = 80;
287+ int r = 100;
288+
289+ canvas.translate(250,0);
290+
291+ Path path1 = new Path();
292+ Path path2 = new Path();
293+ Path pathOpResult = new Path();
294+
295+ path1.addCircle(-x, 0, r, Path.Direction.CW);
296+ path2.addCircle(x, 0, r, Path.Direction.CW);
297+
298+ pathOpResult.op(path1,path2, Path.Op.DIFFERENCE);
299+ canvas.translate(0, 200);
300+ canvas.drawText("DIFFERENCE", 240,0,mDeafultPaint);
301+ canvas.drawPath(pathOpResult,mDeafultPaint);
302+
303+ pathOpResult.op(path1,path2, Path.Op.REVERSE_DIFFERENCE);
304+ canvas.translate(0, 300);
305+ canvas.drawText("REVERSE_DIFFERENCE", 240,0,mDeafultPaint);
306+ canvas.drawPath(pathOpResult,mDeafultPaint);
307+
308+ pathOpResult.op(path1,path2, Path.Op.INTERSECT);
309+ canvas.translate(0, 300);
310+ canvas.drawText("INTERSECT", 240,0,mDeafultPaint);
311+ canvas.drawPath(pathOpResult,mDeafultPaint);
312+
313+ pathOpResult.op(path1,path2, Path.Op.UNION);
314+ canvas.translate(0, 300);
315+ canvas.drawText("UNION", 240,0,mDeafultPaint);
316+ canvas.drawPath(pathOpResult,mDeafultPaint);
317+
318+ pathOpResult.op(path1,path2, Path.Op.XOR);
319+ canvas.translate(0, 300);
320+ canvas.drawText("XOR", 240,0,mDeafultPaint);
321+ canvas.drawPath(pathOpResult,mDeafultPaint);
322+ ```
259323
260324### 计算边界
261325
0 commit comments