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.
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); }