任何人都可以解释UIBezierPath的usesEvenOddFillRule属性如何工作以及它可以在何处使用?
我知道我可能会得到投票,但我真的没有在Apple的文档中得到解释.
BJ *_*mer 19
偶数奇数填充规则是确定路径的哪些区域在路径"内部"与路径"外部"之间的一种方式,这对于填充路径内部非常重要.它们通常仅在路径自身切割孔时才会有所不同.偶数规则通常不会遮蔽那些区域,而另一种选择通常会遮挡.
奇怪的规则就是这样:
当您在包含路径的画布上沿直线前进时,计算穿过路径的次数.如果你已经过了奇数次,那么你就在路径的"内部".如果你经过了偶数次,你就不在路上.
因此,如果你的路径由一个公牛眼形状的两个同心圆组成,偶数规则会认为两个圆之间的区域是"内部"而中心区域是"外部".
另一种选择称为非零缠绕规则.(如果usesEvenOddFillRule是,则使用此选项NO).非零再次考虑了路径上的直线,但对交叉点进行了不同的计算.它考虑了绘制路径的方向.(即逆时针圆圈与顺时针圆圈不同.)因此:
当您在包含路径的画布上沿直线前进时,请保持一个计数器,从0开始.每次越过路径从左到右进行的路径的一部分(从穿过路径的线路观察) ),在柜台加一个.每当你越过一条从右到左的路径行时,从计数器中减去一行.如果计数器非零,则您在路径内.否则,你在外面.
因此,在相同的同心圆示例中,如果两个圆都是在相同方向上绘制的,则整个区域(中心圆的内部和外部)将被视为"在路径内".如果圆圈是以相反方向绘制的,中心区域将被视为"在路径之外",就像奇偶规则一样.
dus*_*uff 18
这里给出了计算机图形填充规则的一个很好的解释.(这是在.NET参考中,但完全相同的原则适用于Quartz.)
http://msdn.microsoft.com/en-us/library/system.windows.media.fillrule.aspx
简而言之,偶数奇数填充规则意味着每个边缘将显示在输出图形中(这可能导致单个填充路径中包含"洞"),而非零填充规则在大多数情况下将最终这意味着即使它包含自相交,绘制的形状也大多是实心的.
下面是一个简单的例子.左图像使用偶数填充规则,右图像使用非零填充规则.

| 归档时间: |
|
| 查看次数: |
4530 次 |
| 最近记录: |