在不裁剪的情况下填充 CGPath 的倒数
Posted
技术标签:
【中文标题】在不裁剪的情况下填充 CGPath 的倒数【英文标题】:Filling the inverse of the CGPath without clipping 【发布时间】:2013-10-14 09:31:29 【问题描述】:假设我有一个 CGPath,它是 CGContextRef 中的一个圆圈。我想做的是用颜色填充路径的倒数。下面演示了圆圈是当前绘制的路径,我想用颜色填充圆圈的反面,留下一个空洞:
【问题讨论】:
【参考方案1】:首先将矩形添加到路径中,然后将圆形(或任何您的路径)添加到同一路径中。然后做一个奇偶填充,它不会填充圆形,因为圆形和矩形都覆盖了它。
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRect(path, NULL, bigRect); // add the big rect
CGPathAddPath(path, NULL, circlePath); // add your shape (the circle)
CGContextDrawPath(path, kCGPathEOFill); // even-odd fill
【讨论】:
这是一个很好的建议,除了我有重叠的圆圈,甚至奇怪会产生不良结果【参考方案2】:由于您有重叠的圆圈,您需要创建一个表示这些圆圈联合的路径,然后将该路径添加到您的矩形并按照 David 的建议进行填充。
为了创建圆形路径的联合,这个项目将证明是无价的:
https://bitbucket.org/martinwinter/vectorbooleancg
确保查看“CGPath”分支以获得 ios 支持。
【讨论】:
以上是关于在不裁剪的情况下填充 CGPath 的倒数的主要内容,如果未能解决你的问题,请参考以下文章