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

Graphics: Elliptische Bögen und Kreisbögen zeichnen

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.

Kreisbogen

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.

Startwinkel und Mittelpunktswinkel eines Kreisbogens

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:

Kreisbogen - mit negativem Drehwinkel gezeichnet

Die Zeichnung verdeutlich, wie dieser Kreisbogen gezeichnet wird.

Startwinkel und Mittelpunktswinkel eines Kreisbogens

Einen Kreissektor zeichnen

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".

ein Kreissektor


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