Gebäude Graphics mit Cocoa Programming

Dazu Programmierung jede Art von Grafiken in Cocoa, machen Sie sich mit einigen wichtigen Kakao-Datenstrukturen: NSPoint, NSRect, NSSize und NSColor. Sie werden sie brauchen, damit sie einen guten Ausgangspunkt zu machen.

Punkte

Cocoa verwendet Punkte Position auf einem quadratischen Raster zu bezeichnen. Um mit Punkten in Cocoa zu umgehen, verwenden Sie eine NSPoint Struktur. NSPoint ist eine Struktur, die aus zwei Schwimmern (benannt x bzw. y). Cocoa Grafiken definiert die untere linke Ecke als Ursprung (0,0). Der X-Wert steigt, wenn Sie nach rechts zu bewegen. Die y-Wert steigt, wie Sie vorher auf. Dies ist eine andere Anordnung als die meisten Macintosh und Windows-Programmierung, wo der Ursprung in der linken oberen Ecke.

typedef struct _NSPoint {
schweben x-
float y-
} NSPoint;

Die x- und y Teil der Struktur sind die Koordinaten des Punktes, die Sie darstellen wollen. Um eine NSPoint Variable verwenden, müssen Sie zuerst definieren es:

NSPoint Punkt gebracht;

Dann Werte auf die x- und y-Mitglieder einer NSPoint Struktur zuzuordnen, verwenden Sie die NSMakePoint Funktion. Dieses Beispiel erstellt ein NSPoint an der Stelle (100,100):

Punkt gebracht = NSMakePoint (100, 100);

Rects und Größen

Eng verwandt mit dem NSPoint Struktur ist die NSRect Struktur. Ein NSRect (Rect ist die Abkürzung für Rechteck) Ist eine Struktur einer NSPoint und einem NSSize zusammen:

typedef struct _NSRect {
NSPoint herkunfts
NSSize größen-
} NSRect;

Um zu verstehen, was das bedeutet, Sie müssen auch über die NSSize Struktur zu wissen:

typedef struct _NSSize {
float breiten-
float höhen-
} NSSize;

Somit ist eine NSRect wirklich eine Struktur von vier Float-Werte: zwei für die NSPoint und zwei für die NSSize. Der NSPoint Abschnitt beschreibt, wo die NSRect beginnt und die NSSize Variable beschreibt die Abmessungen des NSRect. Für Mac-Programmierer, die auf Cocoa neu sind, kann dies nehmen ein wenig gewöhnungsbedürftig, weil die Rect-Struktur in QuickDraw verwendet subtil von der Struktur NSRect unterscheidet. (A Rect besteht aus zwei Punkten.)

Um eine NSRect erstellen, erklären zunächst die NSRect Variable:

NSRect theRect;

Dann initialisiert diese Variable die Funktion NSMakeRect verwenden. NSMakeRect nimmt vier Parameter: x, y, Breite und Höhe. Beispielsweise erzeugt diese Codezeile ein NSRect mit einem Ursprung bei (100,100) und den Abmessungen von 50 x 50:

theRect = NSMakeRect (100, 100, 50, 50);

Wenn Sie später die Herkunft oder die Größe der theRect finden wollen, verwenden Sie Code wie folgt aus:

float theOriginX, theOriginY-
float theSizeW, theSizeH-
theOriginX = theRect.origin.x-
theOriginY = theRect.origin.y-
theSizeW = theRect.size.width-
theSizeH = theRect.size.height;

Farben

Cocoa AppKit umfasst die NSColor Datentyp, damit Sie mit Farbe arbeiten in Ihrer Grafikprojekten. Der einfachste Weg, um ein NSColor Objekt zu erstellen und zu definieren ist eine der integrierten Farb voreingestellten Komponenten zu verwenden. Sie werden sofort erkennen, was jeder schafft, weil sie schlicht-englischen Namen haben.

Um zum Beispiel ein NSColor Objekt, das speichert die Farbe schwarz, verwenden Sie Code wie diese zu erstellen:

// Deklarieren Sie einen Zeiger auf ein Objekt NSColor
NSColor * theColor-
// Erstellen Sie das Objekt
// Und weisen Sie ihm die Farbe Schwarz
theColor = [NSColor black];

Wie Sie vielleicht schon erraten haben, funktioniert dieser Code für viele andere Farben zu (Bluecolor, RedColor, und so weiter). Tabelle 1 listet die gesamte Sammlung von voreingestellten Komponenten, die Sie viele gemeinsame Farben erstellen können.

Tabelle 1: Voreingestellte Farbkomponenten

Preset-Komponente

Farbe Es produziert

black

Schwarz

blaue Farbe

Hellblau

braune Farbe

Braun

cyanColor

Hellblau

darkGrayColor

Dunkelgrau

graue Farbe

Mittelgrau grau~~POS=HEADCOMP

grüne Farbe

Hellgrün

lightGrayColor

Hellgrau

magentaColor

Rosa-violett

orange Farbe

Orange

lila Farbe

Lila

rote Farbe

Hellrot

weiße Farbe

Weiß

gelbe Farbe

Hell und sonnig gelb

Schließlich möchten Sie einige Farben, die die vorgegebenen Komponenten nicht abdecken. In diesem Fall müssen Sie einige der anspruchsvolleren Farbmethoden im AppKit greifen. Die AppKit hat drei Arten von Farbräumen (Wege zur Schaffung von Farbe), die Sie verwenden können Farben zu erstellen:

  • Abhängig vom Gerät (oder Gerät)
  • Geräte-unabhängig (oder kalibriert)
  • Genannt

Wenn Sie Gerätefarben, Sie können nicht sicher sein, dass Sie immer die gleiche Farbe auf verschiedenen Geräten erhältlich sind. Du bist wahrscheinlich mit dieser Art von Farbe am meisten vertraut, weil die meisten Home-Computer-Monitore und Drucker es angezeigt werden soll. Es ist nicht so gut, aber für den professionellen Druck, Farbkorrektur und ähnliche Farbe Aufgaben.

Um das zu umgehen dieses Problem Farbe, Computer und Drucker-Hersteller begann Hard- und Software-Lösungen zu schaffen, ihre Ausrüstung zu kalibrieren. Die Idee war, dass Sie in der Lage sein sollte, die gleiche Art von Ausgang egal, welches Gerät Sie verwendet, um zu sehen. Die Kalibrierung soll für die Besonderheiten der das jeweilige Gerät zu berücksichtigen und stellen Sie es genaue Farben zu erzeugen.

Das geräteabhängig Art der Farbraum verfügt über drei Farbräume. Normalerweise erstellen Sie Farben durch unterschiedliche Mengen an spezifischen Grundfarben gemischt werden. Die drei Mischsysteme, die Sie in geräteabhängige Farbe verwenden können, sind

  • DeviceRGB: Rot, Grün, Blau und Alpha-Komponenten
  • DeviceCMYK: Cyan, Magenta, Gelb, Schwarz und Alpha-Komponenten
  • DeviceWhite: Weiß und Alpha-Komponenten

Für den Rest dieses Artikels müssen Sie nur DeviceRGB Sorge, weil es die beste Wahl auf einem Monitor zur Anzeige von Grafiken ist. Nachdem Sie den Dreh des DeviceRGB Farbraum erhalten, ist es einfach, die DeviceCMYK und DeviceWhite Farbräume zu verwenden.

Nun ist es Zeit, um den Code zu erhalten. Statt die Farben der voreingestellten Komponenten verwenden, können Sie Ihre eigenen RGB-Farben definieren, indem die colorWithDeviceRed Funktion. Die Funktion nimmt vier Schwimmer als Parameter. Diese vier Zahlen entsprechen den drei Farbkanäle (rot, grün und blau) und dem alpha-Kanal. Jeder Parameter kann einen Wert zwischen 0,0 und 1,0- 1,0 voll eingeschaltet ist. Der Alpha-Parameter bestimmt, wie undurchsichtig die Farbe. Ein Wert von 1,0 ist völlig undurchsichtig, und ein Wert von 0.0 ist vollständig transparent.

Dieses Nummerierungsschema im Gegensatz zu den Farben in vertrauten Anwendungen wie Web-Seiten und Photoshop-Dokumente verwendet, wo die Nummerierung in der Regel einen Bereich zwischen 0 und 255 hat, um mit dem Kakao-Art, die Dinge zu korrelieren, fügen Sie 1 auf den Wert jeder Farbkomponente und teilen von 256. zum Beispiel, wenn Sie eine Photoshop-Farbe mit RGB-Werte (127,63,255) an die RGB-Werte für einen NSColor konvertieren möchten, führen Sie diese einfache Rechnung:

127 + 1 = 128/256 = 0,5
63 + 1 = 64/256 = 0,25
255 + 1 = 256/256 = 1,0

ein NSColor Objekt im DeviceRGB Farbraum, verwenden Sie Code wie folgt zu erstellen:

// Deklarieren Sie einen Zeiger auf ein Objekt NSColor
NSColor * theColor-
// Erstellen Sie das Objekt
// Und weisen Sie ihm die Farbe Schwarz
theColor = [NSColor colorWithDeviceRed: (float) 0.0
grün: (float) 0,0 blau: (float) 0.0 alpha: (float) 1.0];

Beachten Sie, dass die roten, grünen und blauen alle Parameter auf 0,0 eingestellt. Wenn Sie eine rote Farbe Objekt zu erstellen wollte, würden Sie folgenden Code verwenden:

// Erstellen Sie das Objekt
// Und weisen Sie ihm die Farbe Rot
theColor = [NSColor colorWithDeviceRed: (float) 1.0
grün: (float) 0,0 blau: (float) 0.0 alpha: (float) 1.0];

Der rote Parameter hat einen Wert von 1,0, und die grünen und blauen Komponenten haben einen Wert von 0,0. Durch Einstellen des Alpha-Wert, können Sie verschiedene Schattierungen der gleichen Farbe.

Nachdem Sie ein Farbobjekt, das einzige andere Sache, schaffen Sie damit vor der Arbeit tun müssen, ist die Set-Funktion zu verwenden. Hier wird die Grafik Stift auf die gewünschte Farbe:

[Color set];

Ja, es ist so einfach wie das!

Menü