在 Swift 中画一个圆 (MacOS)

Drawing a circle in Swift (MacOS)

我找到了这段用于为 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)
}

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

圆当量是

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()
    }   
}

或经典的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()
    }
}

根据圆的边,你也可以这样做:

class YourParentView: NSView {

    // Create it as a view of its own
    let circleView = NSView()
    circleView.wantsLayer = true

    circleView.layer?.cornerRadius = 7 
    //depending on the size, adjust this
    //and that's it. Now it's a circle.

    //Then just addict the style
    circleView.layer?.backgroundColor = NSColor.green.cgColor
    circleView.layer?.borderColor = NSColor.white.cgColor

    //Be sure to add it to the parent view
    self.view.addSubview(circleView)
}