在 Swift (MacOS) 中画一个圆

Dev*_*dka 0 macos cocoa geometry draw swift

我找到了用于为 MacOS 应用绘制线条的代码。

 class Drawing: NSView {
        override func draw(_ dirtyRect: NSRect) {
            super.draw(dirtyRect)

            let context = NSGraphicsContext.current?.cgContext;

            context!.beginPath()
            context!.move(to: CGPoint(x: 0.0, y: 0.0))
            context!.addLine(to: CGPoint(x: 100.0, y: 100.0))
            context!.setStrokeColor(red: 1, green: 0, blue: 0, alpha: 1)
            context!.setLineWidth(1.0)
            context!.strokePath()
        }

override func viewDidLoad() {
        super.viewDidLoad()
let dr = Drawing(frame: NSRect(x: 0, y: 0, width: 100, height: 100))
        self.view.addSubview(dr)
}
Run Code Online (Sandbox Code Playgroud)

如何更改圈子的此代码?我很难解决这个问题。请帮帮我。

vad*_*ian 6

等效圆为

class Drawing: NSView {
    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)

        let context = NSGraphicsContext.current!.cgContext
        context.saveGState()
        context.setFillColor(NSColor.red.cgColor)
        context.fillEllipse(in: dirtyRect)
        context.restoreGState()
    }   
}
Run Code Online (Sandbox Code Playgroud)

或者经典的NSBezierPath方式

class Drawing: NSView {
    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)

        let fillColor = NSColor.red
        let path = NSBezierPath(ovalIn: dirtyRect)
        fillColor.setFill()
        path.fill()
    }
}
Run Code Online (Sandbox Code Playgroud)