zu www.bildungsgueter.de nächster Abschnitt zur Inhaltsübersicht des Kapitels vorheriger Abschnitt

Graphics: Linien zeichnen

Nachdem du nun das Koordinatensystem einer Zeichenfläche kennst und außerdem weißt, wie man aus dem Darstellungsrechteck einer Zeichenebene einzelne Punkte berechnen kann, kannst du damit beginnen, Linien zu zeichnen. Vielleicht erscheint dir das so einfach, dass es uninteressant ist, aber das ist nicht ganz richtig. Fangen wir also mal mit einem einfachen Beispiel an:

Rectangle bereich = Rectangle.Inflate(rechteck, -10, -10);
using (Pen stift = new Pen(Color.Red, 1.0f))
{
    g.DrawLine(stift,                           //  Zeichenstift
               bereich.Left, bereich.Top,       //  Anfangspunkt
               bereich.Right, bereich.Bottom);  //  Endpunkt
}

Das ist einfach eine Linie von links oben nach rechts unten. Wenn du das Fenster vergrößerst oder verkleinerst, wirst du bemerken, dass die Linie immer von der linken oberen Ecke in die rechte untere Ecke gezeichnet wird. Das liegt daran, dass du die linke obere und die rechte untere Ecke des veränderten Darstellungsrechtecks jedes Mal neu berechnest.

Eine dünne Linie

Um eine Linie zu zeichnen, verwendest du statt eines Pinsels (Brush) einen Stift (Pen). Für einen Stift gibst du Strichfarbe und Strichbreite an.

Die hier verwendete Funktion DrawLine() erwartet fünf Argumente:

Kantenglättung

Wenn du dir die gezeichnete Linie genau ansiehst, bemerkst du, dass sie aus kleinen Streckenabschnitten zusammengesetzt ist und gelegentliche Sprünge oder Kanten aufweist. Diese Sprünge enstehen, weil die Linie durch eine Folge von Punkten dargestellt wird, die zu beiden Seiten der Linie weniger als einen halben Punkt vom mathematischen Verlauf der Linie abweichen. Sobald die Abweichung eines Punktes zu groß wird, ist eine (waagerechte oder senkrechte) Korrektur um einem Punktabstand erforderlich. Diese Korrektur nimmst du als Sprung oder als Unglattheit wahr.

Es gibt die Möglichkeit, eine Linie mit einem Verfahren zu zeichnen, bei dem die Sprünge durch die Verwendung unterschiedlicher Farbtöne so abgemildert werden, dass sie nicht mehr ins Auge fallen. Dieses Verfahren wird Kantenglättung genannt.

Die Verwendung des Kantenglättungsverfahrens ist eine Eigenschaft des Zeicheninstruments, die SmoothingMode heißt. Für diese Eigenschaft stehen mehrere Werte zur Wahl. Im folgenden Beispiel verwendest du den Wert SmoothingMode.AntiAlias :

Rectangle bereich = Rectangle.Inflate(rechteck, -10, -10);
g.SmoothingMode = SmoothingMode.AntiAlias;

using (Pen stift = new Pen(Color.Red, 1.0f))
{
    g.DrawLine(stift,                           //  Zeichenstift
               bereich.Left, bereich.Top,       //  Anfangspunkt
               bereich.Right, bereich.Bottom);  //  Endpunkt
}

Das ist die gleiche Linie - aber wenn du genau hinguckst, siehst du doch einen Unterschied: Die Linie sieht glatter aus als im vorangegangenen Beispiel: Die Sprünge zwischen den kurzen Geradenabschnitten sind weg.

Eine dünne Linie, mit Kantenglättung gezeichnet

Die folgenden Vergrößerungen helfen dir, den Unterschied beider Darstellungsverfahren zu erkennen:

ohne Kantenglättung
mit Kantenglättung
ohne Kantenglättung gezeichnete Linie
mit Kantenglättung gezeichnete Linie

Alle Punkte der Linie werden mit der gleichen Farbe gezeichnet.

Punkte, die genau auf der Linie liegen, werden stärker hervorgehoben als solche, die die Linie nicht genau treffen.


vorheriger Abschnitt zur Inhaltsübersicht des Kapitels nächster Abschnitt