我正在尝试创建一个类似左边的图像。我有一个NSBezier路径(不是封闭路径)但是当我填充它时,它似乎只产生右边的图像。我想填补路径,但只填写循环部分。有什么建议吗?
UIGraphicsBeginImageContext(board.size)
if let context = UIGraphicsGetCurrentContext() {
if let path = snake.path {
context.setShouldAntialias(false)
let transformedPath = CGMutablePath()
transformedPath.addPath(path, transform: transform)
context.addPath(transformedPath)
context.setLineJoin(.round)
context.setLineCap(.round)
context.setLineWidth(snake.thickness)
context.setStrokeColor(UIColor.magenta.cgColor)
context.strokePath()
context.fillPath()
}
if let newImage = UIGraphicsGetImageFromCurrentImageContext()?.cgImage {
board.texture = SKTexture(cgImage: newImage)
}
}
UIGraphicsEndImageContext()
答案 0 :(得分:1)
您没有阅读strokePath
documentation,其中说:
当前路径被清除为调用此函数的副作用。
因此,当您致电fillPath
时,当前路径为空。没有什么可以填补的。在调用context.addPath(transformedPath)
之前,您需要再次调用fillPath
来重新设置路径。
如果您想先填充然后填充,请拨打使用context.drawPath(using: .fillStroke)
。此方法填充,然后描边当前路径(然后清除当前路径)。
另外,您没有设置上下文的填充颜色。默认填充颜色为黑色,可能不是您想要的颜色。