剪辑绘图到不透明(笔画)CAShapeLayer的一部分

时间:2017-01-04 14:18:38

标签: ios swift core-graphics quartz-core

我的CAShapeLayer有不透明的笔触和透明填充。然后我想调用myContext.drawRadialGradient,但是将这个径向渐变剪辑放到我的形状图层的笔划中。目前,我正在调用myShapeLayer.path.addClip(),它将径向渐变剪切到形状图层的填充区域,而不是笔划。

换句话说,我想使用只是图层的不透明部分只是笔划(在我的情况下也是如此),以及用它来剪辑当前的上下文。我一直在搜索CoreGraphics文档一段时间无济于事。

3 个答案:

答案 0 :(得分:1)

找到我的答案。您可以使用笔划创建一个新的UIBezierPath,它是现有UIBezierPath的副本,如下所示:

let strokePath = UIBezierPath(cgPath: oldPath.cgPath.copy(
    strokingWithWidth: ..., lineCap: ..., lineJoin: ..., miterLimit: ...))
strokePath.addClip()

答案 1 :(得分:0)

如果将形状图层添加为渐变图层的蒙版,该怎么办?这应该工作,因为这是掩模层应该做的事情。

如果这不起作用,您可能需要将形状图层捕获到图像并将THAT安装为渐变图层的蒙版。

答案 2 :(得分:0)

将描边路径转换为填充区域与原始描边相同的新路径。现在您有一个可填充的区域,可以用作剪裁区域。 CGContext的方法是调用replacePathWithStrokedPath。正如文档明确指出:

  

例如,您可以通过调用此函数然后调用函数clip()来剪切到路径的描边版本。