当渲染重叠的CGPath时,Apple使用缠绕规则来决定是否将它们都渲染为实心,或者使用其中一个来裁剪另一个。
我希望我的所有CGPath都是可靠的,但我不能告诉用户“以OR ELSE方式绘制它们”,所以我需要检测卷绕方向与正常方向相反,然后反转它。 / p>
我知道如何使用CGPathApply反转路径的所有元素(虽然它是很多样板代码) - 但是如何访问CGPath的缠绕方向? Apple没有计算过这个(因为他们在内部使用它)?
最糟糕的情况是,我还会重新实现这个轮子,并制作另一个CGPathApply计算绕组 - 但这似乎过于样板/错误,所以如果有这个信息的Apple源...
答案 0 :(得分:0)
为什么不使用even-odd fill rule呢?然后每个子路径的方向不会影响结果。用户至少会看到一致的奇怪结果,并且能够发现不这样做。
无论如何,路径上并没有真正的“蜿蜒方向”。填充规则始终在点评估绕组。
想象一下八字形路径,其中一个叶片顺时针方向,另一个逆时针方向。一个凸角内的一个点的绕组与另一个凸角内的绕组不同。
我认为如果你想强迫你的对象“坚固”,你将不得不对用户输入的路径进行一些手术。同样,可能更容易给出一致的结果,并让用户自己弄清楚如何做到这一点。
答案 1 :(得分:0)
最后,我写了自己的。伪代码: