Полностью удалить NSBezierPath? - PullRequest
       40

Полностью удалить NSBezierPath?

0 голосов
/ 29 февраля 2020

В моем коде у меня есть функция, которая рисует aws строк на экране, используя следующий код:

  func drawLine (pointArray:[[[Double]]]) -> NSBezierPath{

    var path:NSBezierPath = NSBezierPath()
    let color = NSColor(red:0.0, green: 1.0, blue:0.0, alpha: 1.0)
    color.set()
    for i in 0...(pointArray.count - 1){
    path.move(to: NSPoint(x: pointArray[i][0][0], y: pointArray[i][0][1]))
    path.line(to: NSPoint(x: pointArray[i][1][0], y: pointArray[i][1][1]))
    path.lineWidth = 50.0
    path.stroke()
    }


}

Однако, когда я пытаюсь сбросить отображение, рисуя белый прямоугольник, используя:

func clear(){

        NSColor.white.setFill()
        bounds.fill()

    }

строки все еще остаются. Я попытался обойти это, установив глобальную переменную для пути и изменив мою функцию так, чтобы она фактически возвращала путь, чтобы у меня был доступ к нему вне функции:

var path:NSBezierPath = NSBezierPath()

func drawLine (pointArray:[[[Double]]]) -> NSBezierPath{

    let color = NSColor(red:0.0, green: 1.0, blue:0.0, alpha: 1.0)
    color.set()
    for i in 0...(pointArray.count - 1){
    path.move(to: NSPoint(x: pointArray[i][0][0], y: pointArray[i][0][1]))
    path.line(to: NSPoint(x: pointArray[i][1][0], y: pointArray[i][1][1]))
    path.lineWidth = 50.0
    path.stroke()

  }

  return path

}

, но я не могу найти способ перерисовать путь, чтобы избавиться от него.

1 Ответ

1 голос
/ 29 февраля 2020

Установите значение bezierPath, равное path в вашем случае, равным nil, которое очищает старый путь Безье, а затем вызовите [self setNeedsDisplay]. или вы можете использовать removeAllPoints для пути и вызвать [self setNeedsDisplay]

Happy coding =)

...