我正在尝试创建一个加号形状的剪切路径,以便我在同一上下文中绘制的后续路径删除了这部分。我使用两个相互重叠的矩形路径创建剪切路径。
当我随后画一个圆时,这就是我希望最终绘图的样子:
XX| |XXx
XXXX| |XXXX XXXX
| |XXXXX
——— ———<br /> ——— ———<br />XXXXX| |XXXXX
XXXX| |XXXX
xXX| |XX
然而,它实际上是这样的:
XX| |XXx
XXXX| |XXXX XXXX
| |XXXXX
——— XX———<br />——— XX———<br />XXXXX| |XXXXX
XXXX| |XXXX
xXX| |XX
如果我正确阅读了此行为,则两条矩形路径的交点不会构成剪贴蒙版的一部分。
在这种情况下,appendPath 似乎(并不奇怪)不会从我的两个矩形路径创建一个统一的路径——我假设对此我无能为力。此外,Core Graphics 似乎没有任何与路径联合等相关的功能。
有谁知道我能做什么?我已经包含了相关的代码片段。
使用一条路径绘制加号不是解决方案,因为我想将其他重叠路径添加到我的剪贴蒙版中。
CGContextSaveGState(context);
// create clipping path
UIBezierPath *clippingPath = [UIBezierPath bezierPath];
clippingPath = [UIBezierPath bezierPathWithRect:CGRectMake(centrePoint.x - 2.0f, 0.0f, 4.0f, self.sizeY)];
[clippingPath appendPath:[UIBezierPath bezierPathWithRect:CGRectMake(0.0f, centrePoint.y - 2.0f, self.sizeX, 4.0f)]];
// use the clipping path to create a hole in the context
CGContextAddPath(context, clippingPath.CGPath);
CGRect boundingRect = CGContextGetClipBoundingBox(context);
CGContextAddRect(context, boundingRect);
CGContextEOClip(context);
// draw the icon shape (clipped portion is removed)
iconBezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(self.sizeX / 3.0f, self.sizeY / 2.25f, self.sizeX / 3.0f, self.sizeX / 3.0f)];
[highlightColor setFill];
[iconBezierPath fill];
CGContextRestoreGState(context);