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

Graphics: Figuren ausmalen

Auch ein Dreieck kannst du ausmalen. Die Eckpunkte des Dreiecks bereitest du so vor, als ob du einen Streckenzug zeichnen möchtest. Um das Dreieck auszumalen, verwendest du aber die Methode FillPolygon(), die statt mit einem Stift mit einem Pinsel aufgerufen wird:

Rectangle bereich = Rectangle.Inflate(rechteck, -20, -20);
Point[] punkte = new Point[3];

punkte[0].X = bereich.Left;
punkte[0].Y = bereich.Top;

punkte[1].X = bereich.Right;
punkte[1].Y = bereich.Top;

punkte[2].X = (bereich.Right + bereich.Left) / 2;
punkte[2].Y = bereich.Bottom;

using (SolidBrush pinsel = new SolidBrush (Color.Tomato))
{
     g.FillPolygon(pinsel, punkte);  
}

Das Ergebnis ist natürlich keine Überraschung.

Ausgefülltes Polygon

Wenn du willst, kannst du das Dreieck zusätzlich noch umranden - dazu stellst du einen Stift mit Farbe und Strickstärke deiner Wahl her und zeichnest den Rand mit DrawPolygon().

Das Ausmalen eines Vielecks geschieht in gleicher Weise. Für das folgende Beispiel greifst du auf den Code zurück, den du für das Zeichnen von Vielecken verwendet hast:

  // Konstanten festlegen
const int anzahlEcken = 5;    //   >= 3
const float mittelpunktswinkel = 360.0f / anzahlEcken;
const float startwinkel = -90.0f;

  // weißen Hintergrund zeichnen
using (SolidBrush pinsel = new SolidBrush(Color.White))
    g.FillRectangle(pinsel, rechteck);

  // Mittelpunkt und Umkreisradius berechnen
int hoehe = rechteck.Height;
int breite = rechteck.Width;
int mittelpunktX = breite / 2;
int mittelpunktY = hoehe / 2;
int halbseite = (hoehe < breite ? hoehe : breite) / 2;
int radius = halbseite - 10;

  // Speicherplatz für Punkte reservieren
PointF[] punkte = new PointF[anzahlEcken];

  // Eckpunkte berechnen
for (int i = 0; i < punkte.Length; i++)
{
    double zentralwinkel = i * mittelpunktswinkel;
    double winkel = zentralwinkel + startwinkel;
    double bogen = Math.PI * winkel / 180.0;
    punkte[i].X = (float)(radius * Math.Cos(bogen)) + mittelpunktX;
    punkte[i].Y = (float)(radius * Math.Sin(bogen)) + mittelpunktY;
}

  // Vieleck zeichnen
using (SolidBrush pinsel = new SolidBrush(Color.Firebrick))
{
    g.FillPolygon(pinsel, punkte);
}

Ausgefülltes Fünfeck


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