Es gibt ein paar Schritte, um etwas in Cocoa zu zeichnen.
Zuerst benötigen Sie einen Pfad, der zum Definieren des Objekts verwendet wird, das Sie zeichnen möchten. Sehen Sie hier Drawing Fundamental Shapes für eine Anleitung zum Erstellen von Pfaden in Cocoa. Sie werden am meisten daran interessiert sein, die Nachricht "appendBezierPathWithOvalInRect" an ein "NSBezierPath" -Objekt zu senden. Dabei wird ein Rechteck verwendet, das den zu zeichnenden Kreis begrenzt.
Dieser Code wird ein 10x10 Kreis erstellen bei 10,10 Koordinaten:
NSRect rect = NSMakeRect(10, 10, 10, 10);
NSBezierPath* circlePath = [NSBezierPath bezierPath];
[circlePath appendBezierPathWithOvalInRect: rect];
Sobald Sie Ihren Weg haben Sie die Farbe für die aktuelle Zeichnung Kontext setzen. Es gibt zwei Farben, Strich und Füllung; Strich ist der Umriss des Pfades und die Füllung ist die Innenfarbe. Um eine Farbe festzulegen, senden Sie "set" an ein "NSColor" -Objekt.
Damit wird der Hub auf schwarz und die Füllung auf rot:
[[NSColor blackColor] setStroke];
[[NSColor redColor] setFill];
Jetzt, wo Sie Ihren Weg und Sie haben Ihre Farben den Pfad nur füllen gesetzt und es dann ziehen:
[path stroke];
[path fill];
All dies muss in einem Grafikkontext wie in DrawRect einer Ansicht vielleicht getan werden.Alle mit einem Grafikkontext dieser zusammen würde wie folgt aussehen:
- (void)drawRect:(NSRect)rect
{
// Get the graphics context that we are currently executing under
NSGraphicsContext* gc = [NSGraphicsContext currentContext];
// Save the current graphics context settings
[gc saveGraphicsState];
// Set the color in the current graphics context for future draw operations
[[NSColor blackColor] setStroke];
[[NSColor redColor] setFill];
// Create our circle path
NSRect rect = NSMakeRect(10, 10, 10, 10);
NSBezierPath* circlePath = [NSBezierPath bezierPath];
[circlePath appendBezierPathWithOvalInRect: rect];
// Outline and fill the path
[circlePath stroke];
[circlePath fill];
// Restore the context to what it was before we messed with it
[gc restoreGraphicsState];
}
Sieht aus wie es gerade ist a: bezierPathWithOvalInRect: Danke! – kdbdallas
Yup, das ist neu in Leopard, wenn ich mich richtig erinnere. Davor war es eines der allerersten Dinge, die neue Cocoa-Programmierer (einschließlich mir selbst) zu tun hatten, eine Kategorie in NSBezierPath zu definieren, um einen kreisförmigen oder abgerundeten Rechteckpfad zu erstellen. :) –