Was ist die bevorzugte/empfohlene Weg, um eine Linie zu zeichnen in der NSView-drawRect: - Methode?
Konnte ich keine gefunden-Linie zeichnen von primitiven, die in Kakao zu NSView Ebene. Das einzige, was ich habe, das gefunden worden ist NSBezierPath
. Ist dies ein bevorzugter Weg? Oder gibt es eine andere Möglichkeit, die ich konnte nicht entdeckt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
NSBezierPath
ist genau das, was Sie verwenden sollten. Wenn Sie nur wollen, zu zeichnen, eine gerade Linie von einem Punkt zum anderen, verwenden Sie die Methode der Klasse:+strokeLineFromPoint:(NSPoint)point1 toPoint:(NSPoint)point2
Kakao verwendet einen impliziten Zeichnung stack, und ein Aufhebungs-Modell. In Ihrem NSView, wenn sich der Zustand ändert, das würde dazu führen, die Ansicht zu zeichnen, anders, die Sie aufrufen -[self setNeedsDisplay:] zu sagen, die Zeichnung system, das Sie brauchen, um neu gezeichnet werden. Irgendwann in sehr Naher Zukunft, wirklich das Ende der aktuellen Ereignis-Schleife, wird Ihre Sicht auf die drawRect: - Methode aufgerufen werden. Das ist Ihre Gelegenheit, um zu zeichnen, was Sie möchten.
Es gibt eine implizite Fokus-stack, was bedeutet, dass, wenn Sie Ihre Ansicht der drawRect: ist genannt, wird die Zeichnung konzentriert sich auf und werden abgeschnitten, um die Grenzen der dein Blick in die Fenster ist es in. Sie können dann die Funktionen aufrufen wie [[NSColor redColor] set]; und NSRectFill([self bounds]);
Hier ein Beispiel:
Sollte die Ansicht zeichnen Sie eine Diagonale Linie, und jedes mal, wenn darauf geklickt wird, soll die Leitung die Farbe ändern.
Habe ich versucht, das Beispiel von Jon und fand, dass ich brauchte, um hinzuzufügen, 2 kleinere Korrekturen, um den code-Beispiel oben.
Einmal habe ich behoben, ich fand den code snippit sehr nützlich.
HINWEIS: Sie müssen wahrscheinlich dealloc die NSColor als gut.
Nur hinzufügen, dass einige info, die ich zur Gewohnheit machen, machen Sie sicher, dass die Grafik-Status wird gespeichert und wiederhergestellt, die vor und nach dem zeichnen, um die Dinge zippy.