- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个UIBezierPath
,它是一个弧线。我只想在图形上下文中绘制笔划(即圆弧的笔划,不包括连接圆弧终点和起点的线)
完成此操作后,我可以向上下文添加线性渐变,从而有效地在圆弧笔划上绘制渐变。
这是我的drawRect
:
let context = UIGraphicsGetCurrentContext()
CGContextSaveGState(context)
CGContextAddPath(context, _progressPathForProgress(_progressToDrawForProgress(progress)).CGPath)
CGContextStrokePath(context)
CGContextClip(context)
let colours = [self.startColour.CGColor, self.endColour.CGColor]
let colourSpace = CGColorSpaceCreateDeviceRGB()
let colourLocations: [CGFloat] = [0.0, 1.0]
let gradient = CGGradientCreateWithColors(colourSpace, colours, colourLocations)
var startPoint = CGPoint.zeroPoint
var endPoint = CGPoint(x: 0, y: bounds.height)
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, CGGradientDrawingOptions.allZeros)
CGContextRestoreGState(context)
但是这一切只是为我的整个 UIView
添加渐变。我哪里出错了?
最佳答案
路径需要闭合才能使剪裁工作。
如果您不想看到结束线,您可以将描边颜色设置为 UIColor.clearColor()
,然后关闭路径。
CGContextSaveGState(context)
CGContextAddPath(context, _progressPathForProgress(_progressToDrawForProgress(progress)).CGPath)
CGContextStrokePath(context)
CGContextSetStrokeColorWithColor(context, UIColor.clearColor().CGColor)
// close the path, you will need to add some more points here, otherwise
// the end point is simply connected to the start point
CGPathCloseSubpath(...)
CGContextClip(context)
// draw the gradient
我将通过添加更多点来闭合路径 来解释我的意思。下面的图片是我的一个应用程序的屏幕截图,它是一个高度剖面图,在图形下方有一个渐变。
直接关闭路径会导致这种情况,这意味着渐变不会向下绘制到 x 轴:
为了正确地闭合路径,我从最后一个坐标 (x,y) 向下添加点到 x 轴 (x,0),然后添加到 (0,0),最后用第一个点闭合路径,就像这样:
我不想看到结束行,所以我在这里使用 UIColor.clearColor()
。
希望你明白了。
关于ios - CoreGraphics - 绘制弧线描边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29052958/
我正在用 Canvas 绘制一个非传统的响钟。时间由秒环、秒针、分钟环和小时环表示。我正在使用 webkit/mozRequestAnimationFrame 在适当的时间绘制。我想修改第二个环以快速
问题:我在 Canvas 上画一艘宇宙飞船。将鼠标悬停在其 x/y 上时,我在 Canvas 上绘制一条弧线,指示星舰武器 Angular 和范围(考虑星舰当前的巴林/朝向)。目前确定的 Angula
我正在使用 css 制作一个“饼形楔形”,方法是制作一个圆圈,将其剪掉一半,然后变换旋转另一个剪裁矩形,以便仅显示 25 度的弧形。这很好用;一个明确定义了六个这样的饼图的例子是 here . 然而,
我正在尝试研究 Page 65 of LDD3 中提到的 __copy_to_user() 和 __copy_from_user() 内联函数. 我可以看到 __copy_to_user() func
我是一名优秀的程序员,十分优秀!