Dass du ein Platzierungsrechteck angeben musst um die Darstellung einer Ellipse festzulegen, ist schon eine Überraschung. Gucken wir uns einmal genauer an, wie das bei einem Kreis funktioniert.
Die folgenden Bilder zeigen einen Kreis zusammen mit dem quadratischen Platzierungsrechteck, das Position und Größe der Ellipse definiert.
Du siehst, dass bei der Verwendung eines dicken Stiftes über das Platzierungsrechteck hinausgezeichnet wird.
In diesem Bild erkennst du, dass die Farbverteilung eines dicken Stiftes bei einem Kreisbogen die gleiche ist wie bei einer geraden Linie:
Um unter allen Umständen einen Kreis zu zeichnen, musst du dafür sorgen, dass das Platzierungsrechteck ein Quadrat ist. Wie du ein Quadrat herstellst, habe ich dir schon erklärt, jetzt kannst du das ausprobieren:
int hoehe = rechteck.Height; int breite = rechteck.Width; int mittelpunktX = breite / 2; int mittelpunktY = hoehe / 2; int radius = (hoehe < breite ? hoehe : breite) / 2; Rectangle bereich = new Rectangle(mittelpunktX - radius, mittelpunktY - radius, 2*radius, 2*radius); Color farbe = Color.Goldenrod; using (Pen stift = new Pen(farbe, 3.0f)) { g.DrawEllipse(stift, // verwendeter Stift Rectangle.Inflate(bereich, -10, -10)); // einhüllendes Rechteck }
Hier habe ich die Variante genommen, die das Quadrat in der Zeichenfläche zentriert. Verändere sowohl die Höhe als auch die Breite des Fensters mehrfach, um dich davon zu überzeugen, dass der Kreis stets ordentlich eingemittet wird.