ObjectiveCeeds › Cocoa: Zeichnen mit NSBezierPath

Cocoa: Zeichnen mit NSBezierPath

Von Manfred Kreß
Einfache Formen zeichnen
Seite 3 von 4



NSBezierPath hat Methoden, die Pfade für einfache Formen zurückgeben. Sprich Kreise und Rechtecke. Jetzt soll die View eine Hintergrundfarbe bekommen. Schauen Sie sich die Methode drawRect: an. Hier wird ein NSRect übergeben. Der Ursprung ist der Punkt (0/0) und die Größe entspricht der der View. Fügen Sie am Anfang der Methode drawRect: folgende Zeilen ein:
	NSBezierPath *background = [NSBezierPath bezierPathWithRect: dirtyRect];
	[[NSColor grayColor] set];
	[background fill];
Die Methode bezierPathWithRect: erzeugt einen rechteckigen Bezierpfad mit den Dimensionen von dirtyRect. Wieder wird eine Farbe gesetzt nur dieses mal wird eine Form mit der Methode fill ausgemalt. Cocoa zeichnet alle Pfade in Reihenfolge übereinander. Würden Sie das Quadrat erst nach der Linie zeichnen, wäre diese komplett verdeckt. Daher muss der Hintergrund vor dem Vordergrund gezeichnet werden. Ändern Sie den Code, so dass drawRect: folgendermaßen aussieht:
- (void)drawRect:(NSRect)dirtyRect {
 
 
	NSBezierPath *background = [NSBezierPath bezierPathWithRect: dirtyRect];
	[[NSColor grayColor] set];
	[background fill];
	 
	NSBezierPath *line = [NSBezierPath bezierPath];
	[line moveToPoint: NSMakePoint(50, 50)];
	[line lineToPoint: NSMakePoint(100, 50)];
	[[NSColor redColor] set];
	[line stroke];
	
	[[NSColor blackColor] set];
	[background stroke];
 
}
Am Ende wird nun noch einmal mit stroke der Umriss des Quadrats gezeichnet. Dadurch erhalten Sie eine Umrandung der View. Ein Pfad kann also mehrmals benutzt werden. Langsam bekommen Sie den Bogen raus! Die rote Linie soll jetzt einen Bogen machen. Sie können einen Pfad beliebig verlängern. Also zum Beispiel mit lineToPoint: den nächsten Punkt anfahren. Jetzt soll allerdings ein Bogen gezeichnet werden. Der Pfad line wird verlängert:
	NSBezierPath *line = [NSBezierPath bezierPath];
	[line moveToPoint: NSMakePoint(50, 50)];
	[line lineToPoint: NSMakePoint(100, 50)];
	// append an arc.
	[line appendBezierPathWithArcWithCenter: NSMakePoint(100, 70) 
									 radius: 20 
								 startAngle: -90 
								   endAngle: 0];
	[[NSColor redColor] set];
	[line stroke];
Der erste Parameter (center) ist der Mittelpunkt, um den der Kreisausschnitt gezeichnet wird. Dann folgen die beiden Winkel die den Bogen begrenzen. Die Winkel werden jeweils im Gradmaß angegeben und verlaufen gegen den Uhrzeigersinn. 0 Grad liegen auf der X-Achse. Im Beispiel wird der Winkel von -90 nach 0 Grad gezeichnet.

« vorige Seitenächste Seite »