我正在尝试使用核心图形从矩形中删除圆形。这样我就可以看透圆孔(如舷窗)
我已经广泛搜索并尝试使用此处提供的答案Core Graphics, how to draw a Rectangle with an ellipse transparency 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);
}
答案 0 :(得分:3)
在使用CGContextEOFillPath
之前,您需要为矩形添加一个路径,并为椭圆添加一个路径。这里两个形状混合在一条路径中,但不起作用。
顺便说一下,你最后的CGContextEOClip
电话是没用的。