Die Funktion DrawEllipse() zeichnet immer eine geschlossene Ellipse oder einen geschlossenen Kreis. In Situationen, in denen nur ein Ellipsenabschnitt oder ein Kreisabschnitt gezeichnet werden soll, ist die Funktion DrawArc() zu verwenden. Diese Funktion verwendet zwei zusätzliche Argumente, die den Anfangswinkel und den Drehwinkel eines Bogens bestimmen.
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); using (Pen stift = new Pen(Color.Goldenrod, 3.0f)) { g.DrawArc(stift, // verwendeter Stift Rectangle.Inflate(bereich, -10, -10), // einhüllendes Rechteck 50.0f, // Startwinkel in Grad 270.0f); // Mittelpunktswinkel des Bogens in Grad }
Im Programm hast du wieder den bekannten Vorspann: Die Berechnung eines einschließenden Quadrats.
Der Startwinkel eines Bogens wird von der waagerechten Achse aus in Grad gemessen. Der Drehwinkel wird im Mittelpunkt des definierenden Rechtecks vom Startwinkel aus gemessen. Ein positiver Drehwinkel bewirkt eine Drehung im Uhrzeigersinn, ein negativer Drehwinkel bedeutet eine Drehung gegen den Uhrzeigersinn.
Du kannst auch einen negativen Drehwinkel angeben - der Bogen wird dann entgegen dem Uhrzeigersinn gezeichnet.
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); using (Pen stift = new Pen(Color.Goldenrod, 3.0f)) { g.DrawArc(stift, // verwendeter Stift Rectangle.Inflate(bereich, -10, -10), // einhüllendes Rechteck 310.0f, // Startwinkel in Grad -110.0f); // Mittelpunktswinkel des Bogens in Grad }
Du gehst hier vom Startwinkel 310° um 110° zurück:
Die Zeichnung verdeutlich, wie dieser Kreisbogen gezeichnet wird.
Um statt eines Bogens den Umriss eines Kreissektors zu zeichnen, verwendest du statt der Methode DrawArc() die Methode DrawPie(). Diese Methode verbindet die Endpunkte des Bogens mit dem Mittelpunkt des Platzierungsrechtecks.
Color farbe = Color.Goldenrod; using (Pen stift = new Pen(farbe, 3.0f)) { g.DrawPie(stift, Rectangle.Inflate(rechteck, -10, -10), 0.0f, 105.0f); }
Du siehst, dass die Enden des Kreisbogens mit dem Kreismittelpunkt verbunden werden. Die entstehende Figur erinnert an ein Tortenstück - daher auch der Name "Pie".