Grafische Programmierung: Einführung in die Grafik-Programmierung

Um in die grafische Programmierung einzusteigen, müssen wir als erstes einige grundlegende Informationen über die sogenannte GDI-Schnittstelle (Graphic Device Interface) lernen. C# bietet uns für die grafische Programmierung die GDI+-Bibliotheken (dabei steht das Pluszeichen für eine Weiterentwicklung der ursprünglichen GDI-Bibliotheken), welche sich im Namensraum System.Drawing und deren untergeordneten Namensräume befinden. Das „Zeichnen“ wird zumeist über das Paint-Ereignis des jeweiligen Steuerelements durchgeführt. Beim Aufruf der Funktion Invalidate() wird der gezeichnete Inhalt für ungültig erklärt und das Paint-Ereignis ausgelöst. Wird die Funktion ohne Parameter aufgerufen, so wird das ganze Steuerelement für ungültig erklärt. Wir können der Funktion auch ein Objekt der Struktur Rectangle (dazu gleich mehr) übergeben, wodurch wir den Bereich, welcher für ungültig erklärt und neu gezeichnet werden soll, angeben können. Dem Paint-Ereignis werden Event-Argumente der Klasse PaintEventArgs übergeben, welche die Eigenschaften ClipRectangle und Graphics enthalten. ClipRectangle ist ein Objekt der Rectangle-Struktur und enthält den Bereich, welcher neu gezeichnet werden soll. Dieser Wert sollte abgerufen werden, wenn Invalidate() mit dem Rectangle-Parameter aufgerufen wird. Die Eigenschaft Graphics enthält ein Objekt der gleichnamigen Klasse. Über diese Eigenschaft werden wir später verschiedene Funktionen zum Zeichnen aufrufen.
Für das Zeichnen sind einige Hilfsklassen von Nöten. Die Struktur Color haben wir ja bereits kennengelernt. Die Color-Struktur enthält einige statische Objekte zum Abrufen von standardisierten Farben. Über die Funktion FromArgb() können wir eine Farbe auch manuell über das RGB-Modell mischen. Die Klasse Brushes enthält ebenfalls statische Objekte für einige Standardfarben. Hier ist ein Mischen jedoch nicht möglich. Die Brushes-Klasse stellt sozusagen den Pinsel zum Zeichnen zur Verfügung. Die Pen-Klasse ist eine Klasse, welche den Stift zum Zeichnen von Linien und Kurven zur Verfügung stellt. Der Konstruktor ist mehrfach überladen und kann daher mit der Farbe (Brushes-Klasse oder Color-Struktur) und bei Bedarf auch zusätzlich mit der Breite aufgerufen werden. Die übergebenen Werte werden in den Eigenschaften Brush bzw. Color und Width hinterlegt. Die Point-Struktur wird verwendet, um einen Punkt in einem Koordinatensystem darzustellen. Dem Konstruktor werden die X- und Y-Koordinate übergeben. Diese können im Nachhinein über die gleichnamigen Eigenschaften gesetzt und abgerufen werden. Wollen wir keine Koordinate sondern eine Größe darstellen, so können wir die Size-Struktur verwenden, welche vom Aufbau der Point-Struktur ähnelt. Die X-Koordinate wird dabei durch die Breite (Eigenschaft Width) und die Y-Koordinate durch die Höhe (Eigenschaft Height) ersetzt. Mit Hilfe der Rectangle-Struktur können wir ein Rechteck mit Positionierung und Größe programmiertechnisch darstellen. Der Konstruktor wird mit vier Ganzzahlen (X-Koordinate, Y-Koordinate, Breite, Höhe) oder einem Point- und einem Size-Objekt aufgerufen. Zum Abrufen der einzelnen Werte können wir die Eigenschaften X, Y, Width und Height sowie Left, Top, Right und Bottom verwenden.

LinksRechts