Grafische Programmierung: Ellipsen und Kurven
Eine Ellipse wird mit der Funktion DrawEllipse() gezeichnet. Als Übergabeparameter müssen wir den Stift (Pen-Klasse) und das Rechteck (Rectangle-Struktur) übergeben. Hierbei wird natürlich nicht das Rechteck selbst, sondern die Ellipse oder der Kreis „um das Rechteck herum“ gezeichnet. Das Rectangle-Objekt dient also lediglich als Rahmen.
Um eine Kurve zu zeichnen, können wir die Funktion DrawCurve() der Graphics-Klasse nutzen. Auch der DrawCurve()-Funktion wird als erster Parameter ein Pen-Objekt übergeben. Als zweiter Parameter wird ein Array von einzelnen Koordinatenpunkten (Point-Struktur) übergeben. Bei der gezeichneten Kurve handelt es sich um die sogenannte „Cardinal-Splinekurve“. Im Beispiel zeichnen wir mit Hilfe einer Berechnung eine Sinuskurve. Jedoch geht es im Beispielprogramm mehr um die grafischen Funktionen als um die Berechnung der einzelnen Punkte.
Form1.cs
private void Form1_Paint(object sender, PaintEventArgs e) { Point[] aKurvenPunkte = new Point[12]; e.Graphics.DrawEllipse(new Pen(Brushes.Red), new Rectangle(30, 20, 300, 150)); // erster Punkt der Kurve aKurvenPunkte[0] = new Point(30, 20 + 75); // Punkte des Arrays (Index 1 bis 10) mit Werten für Sinus-Kurve füllen for (int i = 1; i < 11; i++) { // x = 30 (Startpunkt) - 15 (Versatz durch halbe Sinuswelle am Anfang) + aktueller Punkt * 30 // y = 20 (Startpunkt) + 75 (Mitte der Ellipse) +/- 15 (bei jedem Mal, wenn Rest 0 ist Plus andernfalls Minus) aKurvenPunkte[i] = new Point(30 - 15 + (i * 30), 20 + 75 + (i % 2 == 0 ? 15 : -15)); } // letzter Punkt der Kurve aKurvenPunkte[11] = new Point(30 + 300, 20 + 75); e.Graphics.DrawCurve(new Pen(Brushes.Blue), aKurvenPunkte); }