我有一条弧线,它是这样画的:
func drawBackgroundMask(context: CGContextRef,
center: CGPoint,
radius: CGFloat,
lineWidth: CGFloat,
startAngle: CGFloat,
endAngle: CGFloat) {
let adjustedRadius: CGFloat = radius - (lineWidth/2) - 0
CGContextSetLineWidth(context, lineWidth)
CGContextSetLineCap(context, .Round)
CGContextAddArc(context,
center.x,
center.y,
adjustedRadius,
startAngle,
endAngle,
0)
//CGContextClosePath(context)
//CGContextClip(context)
CGContextStrokePath(context)
}
将上述代码注释掉后,我可以创建下面的内容:
然而,如果我试图通过取消上面两行代码的注释并将背景涂成纯色来使用绘制的形状作为遮罩,则会得到不同的结果:
func drawBackgroundMask(context: CGContextRef,
center: CGPoint,
radius: CGFloat,
lineWidth: CGFloat,
startAngle: CGFloat,
endAngle: CGFloat) {
let adjustedRadius: CGFloat = radius - (lineWidth/2) - 0
CGContextSetLineWidth(context, lineWidth)
CGContextSetLineCap(context, .Round)
CGContextAddArc(context,
center.x,
center.y,
adjustedRadius,
startAngle,
endAngle,
0)
CGContextClosePath(context)
CGContextClip(context)
CGContextStrokePath(context)
CGContextSetRGBFillColor(context, 100.0/255.0, 100.0/255.0, 100.0/255.0, 1.0);
CGContextFillRect(context, rect);
}
请问为什么使用绘制的弧线作为剪切蒙版时,它会与实际绘制不同?还有,有人能向我展示如何正确地创建一个带有圆角端点弧形蒙版吗?这个问题是我正在处理的较大控件的一部分,在它上面我必须使用与所示弧形相同的形状来剪裁另一个弧形。图片请参考链接:
![as mask](https://istack.dev59.com/hAVHO.webp)
context.resetClip()
。 - Bocaxica