This commit is contained in:
sloop
2016-05-22 02:32:40 +08:00
parent 70f4332334
commit 790527c721

View File

@@ -1,9 +1,9 @@
# Path之玩出花样 # Path之完结篇(伪)
### 作者微博: [@GcsSloop](http://weibo.com/GcsSloop) ### 作者微博: [@GcsSloop](http://weibo.com/GcsSloop)
### [【本系列相关文章】](https://github.com/GcsSloop/AndroidNote/tree/master/CustomView) ### [【本系列相关文章】](https://github.com/GcsSloop/AndroidNote/tree/master/CustomView)
经历过前两篇 [Path之基本操作](https://github.com/GcsSloop/AndroidNote/blob/master/CustomView/Advance/%5B5%5DPath_Basic.md) 和 [Path之贝塞尔曲线](https://github.com/GcsSloop/AndroidNote/blob/master/CustomView/Advance/%5B6%5DPath_Bezier.md) 的讲解,本篇正式进入Path的收尾篇通过使用前面的内容和本文新学的内容教大家如何将玩转Path玩出花样。 经历过前两篇 [Path之基本操作](https://github.com/GcsSloop/AndroidNote/blob/master/CustomView/Advance/%5B5%5DPath_Basic.md) 和 [Path之贝塞尔曲线](https://github.com/GcsSloop/AndroidNote/blob/master/CustomView/Advance/%5B6%5DPath_Bezier.md) 的讲解,本篇终于进入Path的收尾篇本篇结束后Path的大部分相关方法都已经讲解完了但Path还有一些更有意思的玩法应该会在后续的文章中出现吧应该会的ˊ_>ˋ
****** ******
@@ -282,43 +282,43 @@ XOR | 异或 | 包含Path1与Path2但不包括两者相交的部
代码: 代码:
``` ``` java
int x = 80; int x = 80;
int r = 100; int r = 100;
canvas.translate(250,0); canvas.translate(250,0);
Path path1 = new Path(); Path path1 = new Path();
Path path2 = new Path(); Path path2 = new Path();
Path pathOpResult = new Path(); Path pathOpResult = new Path();
path1.addCircle(-x, 0, r, Path.Direction.CW); path1.addCircle(-x, 0, r, Path.Direction.CW);
path2.addCircle(x, 0, r, Path.Direction.CW); path2.addCircle(x, 0, r, Path.Direction.CW);
pathOpResult.op(path1,path2, Path.Op.DIFFERENCE); pathOpResult.op(path1,path2, Path.Op.DIFFERENCE);
canvas.translate(0, 200); canvas.translate(0, 200);
canvas.drawText("DIFFERENCE", 240,0,mDeafultPaint); canvas.drawText("DIFFERENCE", 240,0,mDeafultPaint);
canvas.drawPath(pathOpResult,mDeafultPaint); canvas.drawPath(pathOpResult,mDeafultPaint);
pathOpResult.op(path1,path2, Path.Op.REVERSE_DIFFERENCE); pathOpResult.op(path1,path2, Path.Op.REVERSE_DIFFERENCE);
canvas.translate(0, 300); canvas.translate(0, 300);
canvas.drawText("REVERSE_DIFFERENCE", 240,0,mDeafultPaint); canvas.drawText("REVERSE_DIFFERENCE", 240,0,mDeafultPaint);
canvas.drawPath(pathOpResult,mDeafultPaint); canvas.drawPath(pathOpResult,mDeafultPaint);
pathOpResult.op(path1,path2, Path.Op.INTERSECT); pathOpResult.op(path1,path2, Path.Op.INTERSECT);
canvas.translate(0, 300); canvas.translate(0, 300);
canvas.drawText("INTERSECT", 240,0,mDeafultPaint); canvas.drawText("INTERSECT", 240,0,mDeafultPaint);
canvas.drawPath(pathOpResult,mDeafultPaint); canvas.drawPath(pathOpResult,mDeafultPaint);
pathOpResult.op(path1,path2, Path.Op.UNION); pathOpResult.op(path1,path2, Path.Op.UNION);
canvas.translate(0, 300); canvas.translate(0, 300);
canvas.drawText("UNION", 240,0,mDeafultPaint); canvas.drawText("UNION", 240,0,mDeafultPaint);
canvas.drawPath(pathOpResult,mDeafultPaint); canvas.drawPath(pathOpResult,mDeafultPaint);
pathOpResult.op(path1,path2, Path.Op.XOR); pathOpResult.op(path1,path2, Path.Op.XOR);
canvas.translate(0, 300); canvas.translate(0, 300);
canvas.drawText("XOR", 240,0,mDeafultPaint); canvas.drawText("XOR", 240,0,mDeafultPaint);
canvas.drawPath(pathOpResult,mDeafultPaint); canvas.drawPath(pathOpResult,mDeafultPaint);
``` ```
### 计算边界 ### 计算边界
@@ -326,6 +326,23 @@ XOR | 异或 | 包含Path1与Path2但不包括两者相交的部
### 重置路径 ### 重置路径
## About Me
### 作者微博: [@GcsSloop](http://weibo.com/GcsSloop)
<a href="https://github.com/GcsSloop/README/blob/master/README.md" target="_blank"> <img src="http://ww4.sinaimg.cn/large/005Xtdi2gw1f1qn89ihu3j315o0dwwjc.jpg" width=300 height=100 /> </a>
## 参考资料
[Path](https://developer.android.com/reference/android/graphics/Path.html)<br/>
[维基百科Nonzero-rule](https://en.wikipedia.org/wiki/Nonzero-rule)<br/>
[android绘图之Path总结](http://ghui.me/post/2015/10/android-graphics-path/)<br/>
[]()<br/>
[]()<br/>
[]()<br/>
[]()<br/>
[]()<br/>
[]()<br/>