在Swift中填充未闭合的贝塞尔路径

在Swift中填充未闭合的贝塞尔路径,swift,cocoa,sprite-kit,quartz-graphics,Swift,Cocoa,Sprite Kit,Quartz Graphics,我正在尝试创建一个类似于左边的图像。我有一个NSBezier路径,不是一个封闭的路径,但当我填充它时,它似乎只生成右侧的图像。我想填充路径,但只填充循环部分。有什么建议吗 你没有读那本书,上面写着: 调用此函数的副作用是清除当前路径 因此,在调用fillPath时,当前路径为空。没什么可填的。在调用fillPath之前,需要再次调用context.addPathtransformedPath来设置路径 如果要先填充,然后是笔划,请调用use context.drawPathusing:.fill

我正在尝试创建一个类似于左边的图像。我有一个NSBezier路径,不是一个封闭的路径,但当我填充它时,它似乎只生成右侧的图像。我想填充路径,但只填充循环部分。有什么建议吗

你没有读那本书,上面写着:

调用此函数的副作用是清除当前路径

因此,在调用fillPath时,当前路径为空。没什么可填的。在调用fillPath之前,需要再次调用context.addPathtransformedPath来设置路径

如果要先填充,然后是笔划,请调用use context.drawPathusing:.fillStroke。此方法先填充当前路径,然后笔划当前路径,然后清除当前路径


此外,您没有设置上下文的填充颜色。默认填充颜色为黑色,这可能不是您想要的颜色。

您的代码中似乎没有任何填充调用。您的意思是它似乎只生成右侧的图像吗?抱歉,我更新了问题谢谢!我想我应该更彻底地阅读文档。。。
 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()