Grafische Programmierung: Ellipsen und Kurven

Ellipsen und KurvenEine 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);
}
Download

LinksRechts