Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions CustomView/Advance/[07]Path_Over.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,8 @@
![](http://ww2.sinaimg.cn/large/005Xtdi2jw1f42368af2jj308c0dwt8z.jpg)

>
>P1: 从P1点发出一条射线,沿射线防线移动,并没有与边相交点部分,环绕数为0,故P1在图形外边。<br/>
>P2: 从P2点发出一条射线,沿射线方向移动,与图形点左侧边相交,该边从左到右穿过穿过射线,环绕数-1,最终环绕数为-1,故P2在图形内部。<br/>
>P1: 从P1点发出一条射线,沿射线方向移动,并没有与边相交点部分,环绕数为0,故P1在图形外边。<br/>
>P2: 从P2点发出一条射线,沿射线方向移动,与图形点左侧边相交,该边从左到右穿过射线,环绕数-1,最终环绕数为-1,故P2在图形内部。<br/>
>P3: 从P3点发出一条射线,沿射线方向移动,在第一个交点处,底边从右到左穿过射线,环绕数+1,在第二个交点处,右侧边从左到右穿过射线,环绕数-1,最终环绕数为0,故P3在图形外部。<br/>

通常,这两种方法的判断结果是相同的,但也存在两种方法判断结果不同的情况,如下面这种情况:
Expand Down Expand Up @@ -144,7 +144,7 @@ Android中的填充模式有四种,是封装在Path中的一个枚举。

我们可以看到上面有四种模式,分成两对,例如 "奇偶规则" 与 "反奇偶规则" 是一对,它们之间有什么关系呢?

Inverse 和含义是“相反,对立”,说明反奇偶规则刚好与奇偶规则相反,例如对于一个矩形而言,使用奇偶规则会填充矩形内部,而使用反奇偶规则会填充矩形外部,这个会在后面示例中代码展示两者对区别
Inverse 的含义是“相反,对立”,说明反奇偶规则刚好与奇偶规则相反,例如对于一个矩形而言,使用奇偶规则会填充矩形内部,而使用反奇偶规则会填充矩形外部,这个会在后面示例中代码展示两者的区别

#### Android与填充模式相关的方法

Expand Down Expand Up @@ -176,7 +176,7 @@ Inverse 和含义是“相反,对立”,说明反奇偶规则刚好与奇偶
path.addRect(-200,-200,200,200, Path.Direction.CW); // 给Path中添加一个矩形
```

下面两张图片分别是在奇偶规则于反奇偶规则的情况下绘制的结果,可以看出其填充的区域刚好相反:
下面两张图片分别是在奇偶规则与反奇偶规则的情况下绘制的结果,可以看出其填充的区域刚好相反:

> PS: 白色为背景色,黑色为填充色。

Expand Down Expand Up @@ -214,7 +214,7 @@ Inverse 和含义是“相反,对立”,说明反奇偶规则刚好与奇偶

### 布尔操作(API19)

布尔操作与我们中学所学的集合操作非常像,只要知道集合操作中等交集,并集,差集等操作,那么理解布尔操作也是很容易的。
布尔操作与我们中学所学的集合操作非常像,只要知道集合操作中的交集,并集,差集等操作,那么理解布尔操作也是很容易的。

**布尔操作是两个Path之间的运算,主要作用是用一些简单的图形通过一些规则合成一些相对比较复杂,或难以直接得到的图形**。

Expand Down Expand Up @@ -257,7 +257,7 @@ Path的布尔运算有五种逻辑,如下:

#### 布尔运算方法

通过前面到理论知识铺垫,相信大家对布尔运算已经有了基本的认识和理解,下面我们用代码演示一下布尔运算:
通过前面的理论知识铺垫,相信大家对布尔运算已经有了基本的认识和理解,下面我们用代码演示一下布尔运算:

在Path中的布尔运算有两个方法

Expand All @@ -268,7 +268,7 @@ Path的布尔运算有五种逻辑,如下:

两个方法中的返回值用于判断布尔运算是否成功,它们使用方法如下:

``` `java
``` java
// 对 path1 和 path2 执行布尔运算,运算方式由第二个参数指定,运算结果存入到path1中。
path1.op(path2, Path.Op.DIFFERENCE);

Expand Down Expand Up @@ -334,7 +334,7 @@ Path的布尔运算有五种逻辑,如下:
| 参数 | 作用 |
| ------ | ------------------------------- |
| bounds | 测量结果会放入这个矩形 |
| exact | 是否精确测量,目前这一个参数作用已经废弃,一般写true即可 |
| exact | 是否精确测量,目前这一个参数作用已经废弃,一般写true即可 |

关于exact如有疑问可参见Google官方的提交记录[Path.computeBounds()](https://code.google.com/p/android/issues/detail?id=4070)

Expand Down Expand Up @@ -369,7 +369,7 @@ Path的布尔运算有五种逻辑,如下:

### 重置路径

重置Path有两个方法,分别是reset和rewind,两者区别主要有一下两点
重置Path有两个方法,分别是reset和rewind,两者区别主要有以下两点

| 方法 | 是否保留FillType设置 | 是否保留原有数据结构 |
| ------ | :------------: | :--------: |
Expand All @@ -385,7 +385,7 @@ _因为“FillType”影响的是显示效果,而“数据结构”影响的

## 总结

Path中常用的方法到此已经结束,希望能够帮助大家加深对Path对理解运用,让大家能够用Path愉快的玩耍。( ̄▽ ̄)
Path中常用的方法到此已经结束,希望能够帮助大家加深对Path的理解运用,让大家能够用Path愉快的玩耍。( ̄▽ ̄)

(,,• ₃ •,,)
#### PS: 由于本人水平有限,某些地方可能存在误解或不准确,如果你对此有疑问可以提交Issues进行反馈。
Expand Down