Swift,围绕矩形创建 cgPath

问题描述 投票:0回答:0

我有一个简单的问题,我想我走错了路

一些描述,我有这样的直觉

我想把它填成光滑的形状

但更平滑(见边框有逐步效果)

我为这个结果做了什么,我创建了所有顶点和所有底部点的点数组,并像这样平滑它

    let path = CGMutablePath()
    var prevPoint: CGPoint?
    var isFirst = true

    for point in points {
        if let prevPoint = prevPoint {
            let midPoint = CGPoint(
                x: (point.x + prevPoint.x) / 2,
                y: (point.y + prevPoint.y) / 2
            )
            if isFirst {
                path.addLine(to: midPoint)
            }
            else {
                path.addQuadCurve(to: midPoint, control: prevPoint)
            }
            isFirst = false
        }
        else {
            path.move(to: point)
        }
        prevPoint = point
    }
    if let prevPoint = prevPoint {
        path.addLine(to: prevPoint)
    }

    path.closeSubpath()

我最难把它画成有边的形式 像这样

红色是我当前算法所拥有的人工制品

mb 我需要在更多点之间进行一些插值,例如 Bézier 曲线,我确实尝试了 3 个点进行插值,但效果更好,但不是我想要的,或者 mb 联合算法(我为此看到了大型 C++ 库,但还没有尝试并认为对我来说很慢),如果你有一些关于这个的阅读信息,我将不胜感激

swift smoothing cgpath
© www.soinside.com 2019 - 2024. All rights reserved.