0

我正在尝试使用核心图形从矩形中删除圆形。这样我就可以透过圆孔看到(像舷窗一样)

我进行了广泛的搜索并尝试利用此处提供的答案Core Graphics, how to draw a Rectangle with an ellipse transparent hole?但我无法让它工作。我所做的只是在矩形顶部画一个圆圈。这是我最终得到的代码,感谢您的帮助

- (void)drawRect:(CGRect)rect{
CGContextRef context = UIGraphicsGetCurrentContext();
// Set color to red
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
// Add rectange
CGContextAddRect(context, rect);
// Fill rectange
CGContextFillRect(context, rect);

// Create a elipse to be removed from rectange

CGMutablePathRef cutoutRect = CGPathCreateMutable();
CGPathAddRect(cutoutRect, NULL, rect);
CGPathAddEllipseInRect(cutoutRect, NULL, CGRectMake(self.bounds.size.width / 4, self.bounds.size.height / 4, self.bounds.size.width / 2, self.bounds.size.width / 2));

CGContextAddPath(context, cutoutRect);
CGContextSetRGBFillColor(context, 1.0, 1.0, 0.0, 1.0);
CGContextEOFillPath(context);

//Remove the elipse

CGContextEOClip(context);
}
4

1 回答 1

3

使用前CGContextEOFillPath需要为矩形添加一条路径,为椭圆添加一条路径。在这里,这两种形状混合在一条路径中,这是行不通的。

顺便说一句,你最后的CGContextEOClip电话是没用的。

于 2013-07-04T08:34:06.730 回答