【问题标题】:CoreGraphics - Clipping a gradient with a strokeCoreGraphics - 用笔划剪裁渐变
【发布时间】:2015-03-14 23:17:57
【问题描述】:

我的 CGContext 有一个路径和一个线宽,这在我的UIView 中绘制了一个漂亮的黑色轮廓。伟大的。现在我正在尝试为这个笔画上色,虽然CGContextSetStrokeColorWithColor 方法还不错,但我想要更鲜艳的颜色,所以决定使用渐变。

问题是 iOS 中没有 CGContextSetStrokeColorWithGradient 方法或(我可以看到)任何类似的方法。所以我想我必须能够绘制一个渐变,该渐变被剪裁到我绘制的笔划上。

为此,我已将渐变绘制到UIView,现在UIView 具有填充视图的渐变背景。

所以现在我有一个黑色的描边和我的渐变。伟大的。但是如何将一个剪辑到另一个?所以看起来我的笔画有渐变的颜色?

我在创建描边和渐变之间调用了CGContextClip,但这不会将渐变剪裁到描边,它只是将渐变剪裁到路径的填充。我唯一想将渐变剪裁到的就是笔划。

有什么想法吗?

这是我的drawRect

let context = UIGraphicsGetCurrentContext()
let colourSpace = CGColorSpaceCreateDeviceRGB()

let path = CGPathCreateMutableCopy(path())

CGContextSetLineWidth(context, myLineWidth)
CGContextSetLineCap(context, kCGLineCapRound)
CGContextAddPath(context, path)

CGContextClip(context)

CGContextStrokePath(context)

let gradient = CGGradientCreateWithColors(colourSpace,
    [startColour.CGColor, endColour.CGColor],
    [0.0, 1.0])

CGContextDrawLinearGradient(context,
    gradient,
    CGPoint.zeroPoint,
    CGPoint(x: 0, y: bounds.height),
    CGGradientDrawingOptions.allZeros)

【问题讨论】:

    标签: ios swift core-graphics


    【解决方案1】:

    所以我需要简单的CGContextReplacePathWithStrokedPath 方法。文档可能会更清楚地说明要发送到上下文的内容,但是我们开始...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 2021-09-15
      • 2019-07-10
      相关资源
      最近更新 更多