填充CGPath的反转而不剪切

时间:2013-10-07 17:31:25

标签: iphone core-graphics quartz-2d clipping cgpath

假设我有一个CGPath,它是CGContextRef中的一个圆圈。我想做的是用颜色填充路径的倒数。下面显示的是圆是绘制的当前路径,我想用颜色填充圆的倒数,留下一个空洞:

enter image description here

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

由于您有重叠的圆圈,因此您需要创建一条代表这些圆圈的并集的路径,然后将该路径添加到矩形并按照David建议填充。

要创建圆形路径的并集,此项目将证明是非常宝贵的:

https://bitbucket.org/martinwinter/vectorbooleancg

请务必查看“CGPath”分支以获得iOS支持。