从路径中减去多个重叠路径
Subtract Multiple Overlapping Paths from Path
我有3条路。我想要从 path3 中减去其中的两条路径,path1 和 path2。我不想填充 path1 和 path2 之间重叠的区域。这是我制作的图表来解释我的意思:
我已经尝试了 this 问题,但接受的答案产生了上面在 "Result With EOClip." 中找到的内容我尝试了 CGContextSetBlendMode(ctx, kCGBlendModeClear)
,但它所做的只是使填充变黑。有什么想法吗?
玩了一下 PaintCode (paint-code) 我着陆了。也许它适合你的情况?
let context = UIGraphicsGetCurrentContext()
CGContextBeginTransparencyLayer(context, nil)
let path3Path = UIBezierPath(rect: CGRectMake(0, 0, 40, 40))
UIColor.blueColor().setFill()
path3Path.fill()
CGContextSetBlendMode(context, kCGBlendModeDestinationOut)
let path2Path = UIBezierPath(rect: CGRectMake(5, 5, 20, 20))
path2Path.fill()
let path1Path = UIBezierPath(rect: CGRectMake(15, 15, 20, 20))
path1Path.fill()
CGContextEndTransparencyLayer(context)
我有3条路。我想要从 path3 中减去其中的两条路径,path1 和 path2。我不想填充 path1 和 path2 之间重叠的区域。这是我制作的图表来解释我的意思:
我已经尝试了 this 问题,但接受的答案产生了上面在 "Result With EOClip." 中找到的内容我尝试了 CGContextSetBlendMode(ctx, kCGBlendModeClear)
,但它所做的只是使填充变黑。有什么想法吗?
玩了一下 PaintCode (paint-code) 我着陆了。也许它适合你的情况?
let context = UIGraphicsGetCurrentContext()
CGContextBeginTransparencyLayer(context, nil)
let path3Path = UIBezierPath(rect: CGRectMake(0, 0, 40, 40))
UIColor.blueColor().setFill()
path3Path.fill()
CGContextSetBlendMode(context, kCGBlendModeDestinationOut)
let path2Path = UIBezierPath(rect: CGRectMake(5, 5, 20, 20))
path2Path.fill()
let path1Path = UIBezierPath(rect: CGRectMake(15, 15, 20, 20))
path1Path.fill()
CGContextEndTransparencyLayer(context)