Skip to content

Commit 70f4332

Browse files
committed
Update
1 parent 5a9e7dd commit 70f4332

1 file changed

Lines changed: 64 additions & 0 deletions

File tree

CustomView/Advance/[7]Path_Play.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,71 @@ INTERSECT | 交集 | Path1与Path2相交的部分 | ![]
255255
UNION | 并集 | 包含全部Path1和Path2 | ![](http://ww2.sinaimg.cn/large/005Xtdi2gw1f43jbqk8rbj305k03cmx4.jpg)
256256
XOR | 异或 | 包含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+
![](http://ww1.sinaimg.cn/large/005Xtdi2gw1f43jz8xnbxj308c0etwes.jpg)
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

Comments
 (0)