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

Graphics: Ein Gitternetz zeichnen

Grafikprogrammierung ist wirklich mühsam, wenn man jeden Punkt und jeden Strich einzeln angeben muss. So hast du das bisher meist gemacht. Lediglich im zuletzt besprochenen Beispiel hast du die Eckpunkte eines regulären Vielecks unter Verwendung einer Formel in einer Wiederholungsanweisung ausgerechnet.

Computergrafik bezieht einen großen Teil ihrer Leistungsfähigkeit aus der geschickten Verwendung von Wiederholungsanweisungen. Das wollen wir uns gleich an einem weiteren Beispiel ansehen:

Wenn du parallel in gleichem Abstand verlaufende Linien zeichen willst, kannst du die Berechnung der Linienendpunkte und das Zeichnen der Linien in einer wohlüberlegt programmierten Schleifenanweisung ausführen. Das sieht dann so aus:

Rectangle bereich = Rectangle.Inflate(rechteck, -20, -20);
float deltaX = bereich.Width / 10.0f;

using (Pen stift = new Pen (Color.Gray, 1.0f))
{
      stift.StartCap = LineCap.Flat;
      stift.EndCap = LineCap.Flat;
      for (int i = 0; i <= 10; i++)
      {
          int xPosition = (int)(deltaX*i + bereich.Left);
          g.DrawLine(stift, xPosition, bereich.Top,
                            xPosition, bereich.Bottom);
      }             
}

Das gibt elf parallele Linien:

11 parallele Linien

Ein paar Anmerkungen zu diesem Programm:

Das Gitter vervollständigen

Weil es so schön ist, geben wir jetzt noch die waagrechten Linien dazu, um ein Gitter zu erhalten:

Rectangle bereich = Rectangle.Inflate(rechteck, -20, -20);
float deltaX = bereich.Width / 10.0f;
float deltaY = bereich.Height / 10.0f;

using (Pen stift = new Pen (Color.Gray, 1.0f))
{
      stift.StartCap = LineCap.Flat;
      stift.EndCap = LineCap.Flat;
      for (int i = 0; i <= 10; i++)
      {
          int xPosition = (int)(deltaX*i + bereich.Left);
          g.DrawLine(stift, xPosition, bereich.Top,
                            xPosition, bereich.Bottom);
          int yPosition = (int)(deltaY * i + bereich.Top);
          g.DrawLine(stift, bereich.Left, yPosition,
                            bereich.Right, yPosition);
      }             
}

Das gibt ein Gitter:

Ein Gitternetz

Das ist jetzt nicht mehr bloße Spielerei - diesen Code kannst du verwenden, wenn du für ein Diagramm ein Gitternetz zeichnen willst. In einem Diagramm wirst du die Achsen des Gitters natürlich noch mit Zahlenwerten beschriften wollen, aber das ist nicht schwer. Du wirst später in diesem Kurs lernen wie das geht.


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