在OS X应用程序中绘制二次曲线

3
我可以使用iOS中的UIBezierPath的方法addQuadCurveToPoint绘制二次贝塞尔曲线,但是在NSBezierPath中找不到相同的方法。
我只能在NSBezierPath类中看到以下方法:
- moveToPoint:(NSPoint)point;
- lineToPoint:(NSPoint)point;
- curveToPoint:(NSPoint)endPoint
       controlPoint1:(NSPoint)controlPoint1
       controlPoint2:(NSPoint)controlPoint2;
- closePath;

有没有一种在OS X环境中绘制四边形曲线的方法?

1
你需要将你的二次曲线转换为三次曲线 - 这里有一个描述:https://dev59.com/S2kx5IYBdhLWcg3wCP6Y - Rhythmic Fistman
还有CGPathAddQuadCurveToPointrelativeCurve(to:controlPoint1:controlPoint2:)函数... - l'L'l
1个回答

6

使用以下代码调用 path.addQuadCurve(to: endPoint, controlPoint: controlPoint)

extension NSBezierPath{   
    func addQuadCurve(to endPoint: CGPoint, controlPoint: CGPoint){
        let startPoint = self.currentPoint
        let controlPoint1 = CGPoint(x: (startPoint.x + (controlPoint.x - startPoint.x) * 2.0/3.0), y: (startPoint.y + (controlPoint.y - startPoint.y) * 2.0/3.0))
        let controlPoint2 = CGPoint(x: (endPoint.x + (controlPoint.x - endPoint.x) * 2.0/3.0), y: (endPoint.y + (controlPoint.y - endPoint.y) * 2.0/3.0))
        curve(to: endPoint, controlPoint1: controlPoint1, controlPoint2: controlPoint2)
    }
}

感谢Rhythmic Fistman的贡献。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接