Когда я нажимаю кнопку в основной программе AppDelegate.swift, я хотел бы видеть результат добавления строки с графикой ядра.
Примечание. Это нормально с моей реализацией AppKit.
Здесь класс базовой графики:
import Cocoa
class LineDyn: NSView {
var cgc:CGContext?
override func draw(_ dirtyRect: NSRect) {
if cgc == nil{
cgc = NSGraphicsContext.current?.cgContext
}
cgc?.setFillColor(CGColor.black)
cgc?.fill(bounds)
addLine(pointInit:CGPoint(x:60,y:60), pointFinal:CGPoint(x:70,y:10))
}
func addLine(pointInit:NSPoint, pointFinal:NSPoint){
if cgc != nil {
print("non nil")
cgc?.setStrokeColor(CGColor.white)
cgc?.setLineWidth(1.0)
cgc?.strokePath()
cgc?.move(to: pointInit)
cgc?.addLine(to: pointFinal)
cgc?.strokePath()
}
else{
print("nil")
}
}
}
Примечание: с базовой графикой я вижу строку, сгенерированную
addLine (pointInit: CGPoint (x: 0, y: 0), pointFinal: CGPoint (x: 50, y: 50)),
, значит, для функции addLine (...) нормально, введите описание изображения здесь , но я не вижугоризонтальная линия от основного:
lineDyn? .addLine (pointInit: NSPoint (x: 0, y: 10), pointFinal: NSPoint (x: 80, y: 10))
Здесьосновной
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var cv1: NSView!
@IBOutlet weak var view: NSView!
@IBAction func n_lignes_dans_custom_view(_ sender: Any) {
let frame = cv1.bounds
let lineDyn = LineDyn(frame: frame)
cv1.addSubview(lineDyn)
lineDyn.addLine(pointInit: NSPoint(x: 0, y: 10), pointFinal: NSPoint(x: 80, y: 10))
}
}
В AppKit я вижу горизонтальную линию, но не линию от draw (), введите описание изображения здесь
Здесь код класса Appkit:
import Cocoa
class LineDyn: NSView {
let myPath = NSBezierPath()
override func draw(_ dirtyRect: NSRect) {
NSColor.black.setFill()
self.bounds.fill()
NSColor.white.set();
myPath.stroke()//obligé
addLine(pointInit:CGPoint(x:0,y:0), pointFinal:CGPoint(x:50,y:50))
}
func addLine(pointInit:NSPoint, pointFinal:NSPoint){
myPath.move(to: pointInit)
myPath.line(to: pointFinal)
}
}
Примечание: нет необходимости добавлять 'cv1.needsDisplay = true' при добавлении графической строки (в основном или в этом клзадница)
Можно ли увидеть строку с графикой ядра?
Еще один вопрос:
С AppKit ок я вижу строкуно когда я использую wand для обновления, выполняю needdisplay = true, строки остаются в представлении подкласса.Как я могу это сделать?
Но с базовой графикой, чтобы увидеть линии с обновлением (needdisplay = true), мне нужно работать с массивом Points в функции 'override draw', но я не хочу работать с массивомдля этого примера.