从CGPath修剪/减去CGPath?

我在CGPath进行了一些CGPath (带有两个圆的CAShapeLayer

我可以修剪/减去这样的path吗?

在这里输入图像说明

而不是做math,结果可以在绘图时使用kCGBlendModeClear来实现。

 // Create the poly. CGContextBeginPath(context); CGContextMoveToPoint (context, a_.x, a_.y); CGContextAddLineToPoint (context, b_.x, b_.y); CGContextAddLineToPoint (context, c_.x, c_.y); CGContextAddLineToPoint (context, d_.x, d_.y); CGContextClosePath(context); // Draw with the desired color. CGContextSetFillColorWithColor(context, self.color.CGColor); CGContextFillPath(context); // Create a circle. CGContextBeginPath(context); CGContextAddEllipseInRect(context, (CGRect){ b_.x - self.radius, b_.y - self.radius, self.radius * 2.0, self.radius * 2.0 }); CGContextClosePath(context); // Draw with Clear (!) blend mode. CGContextSetBlendMode(context, kCGBlendModeClear); CGContextSetFillColorWithColor(context, self.color.CGColor); CGContextFillPath(context); 
Interesting Posts