【问题标题】:Drawing Quad Curve in OS X App在 OS X App 中绘制四边形曲线
【发布时间】:2017-10-21 13:39:26
【问题描述】:

我可以在 iOS 中使用 UIBezierPath's 方法 addQuadCurveToPoint 绘制四边形曲线,但在 NSBezierPath 中找不到相同的方法。

我只能在 NSBezierPath 类中看到以下方法,

- moveToPoint:(NSPoint)point;
- lineToPoint:(NSPoint)point;
- curveToPoint:(NSPoint)endPoint
       controlPoint1:(NSPoint)controlPoint1
       controlPoint2:(NSPoint)controlPoint2;
- closePath;

有没有办法在 OS X 环境下绘制四边形曲线?

【问题讨论】:

  • 您需要将四边形曲线转换为三次曲线 - 这里有说明:stackoverflow.com/q/9485788/22147
  • 还有CGPathAddQuadCurveToPointrelativeCurve(to:controlPoint1:controlPoint2:)函数也...

标签: objective-c macos cocoa core-graphics


【解决方案1】:

致电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)
    }
}

感谢节奏拳手

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多