1.1k Aufrufe
Gefragt in Anwendungen(Java,C++...) von
Hallo Zusammen! Vielleicht kann mir jemand helfen. Ich programmiere
seit einiger Zeit (bin absolut kein Profi) mit C# und möchte in ein
Quadrat eine Ellipse zeichnen lassen, die von unten links nach oben
rechts bzw. oben links nach unten rechts verläuft - also diagonal durch
das Quadrat. Das Quadrat wird über das Steuerelement Panel
dargestellt. Wie löse ich das Problem mit möglichst geringem Aufwand?
Besten Dank für die Hilfe schon mal im Voraus, LG Claudia

4 Antworten

0 Punkte
Beantwortet von computerschrat Profi (32.2k Punkte)
Hallo Claudia,

im ersten Schritt solltest du dich mit den Grafikfunktionen von C# vertraut machen. Such dafür nach c# und canvas.
Dann definierst du dir ein X-Y-Zeichenfeld.
Dann bietet die Funktion canvas.DrawPoint (x, y, paint); dir Möglichkeit einen Punkt in deinem Zeichenfeld zu setzen.

Jetzt nimmst du die Gleichung für eine Ellipse z.B. aus
https://de.wikipedia.org/wiki/Ellipse#Ellipsengleichung_.28kartesische_Koordinaten.29
löst die Gleichung nach Y auf und schreibst dir eine Schleife, die für X die den Wertebereich deines Zeichenfeldes durchläuft.
Innerhalb der Schleife berechnest du die beiden Y-Werte (zwei wegen des quadratischen Funktion) und setzt dann mit oben genannten Funktion einen Punkt.
Schon steht die erste Ellipse als Punktehaufen da.
Der Wert a aus der Gleichung kann als Parameter variiert werden.

Gruß
computerschrat
0 Punkte
Beantwortet von
Hallo computerschrat! Vielen Dank für die gute und vor allem schnelle
Antwort. Ich hab mir das, was Du geschrieben hast mal angesehen.
Aber gibt es da vielleicht noch eine etwas einfachere Lösung, wie z.Bsp.
DrawEllipse und die dann um 45° drehen oder so in der Art? Wie
gesagt ich bin absolut kein Profi, ich betreibe das nur aus Lust und
langer Weile (gut langweilig ist mir nie, sagt man aber so). Eine
waagerechte und eine senkrechte Ellipse habe ich schon
hinbekommen, jetzt wollte ich sie eben auch noch diagonal in das
Panel zeichnen - die sollen auch gar nicht bis ganz in die Ecken gehen.
Was dieses Canvas angeht, habe ich gelesen, dass läuft nur via HTML,
ist dann doch für WindowsForm nicht so das richtige - oder liege ich da
falsch?
0 Punkte
Beantwortet von computerschrat Profi (32.2k Punkte)
Hallo Claudia,

mit Draw Ellipse kannst du das natürlich sehr elegeant und mit wenig Programmieraufwand machen. Hier ist die passende Erläuterung dazu:
https://msdn.microsoft.com/de-de/library/efs2ee0k(v=vs.110).aspx
Insofern ist dein Ziel, die Ellipse mit möglichst wenig Aufwand zu zeichnen damit gut zu erreichen. Bei der punktweisen Darstellung hast du etwas mehr Lerneffekt.

Canvas war tatsächlich nicht das ideale Stichwort zum Suchen. Canvas ist ja nichts andere als der englische Begriff für die Leinwand und wird daher in vielen Programmiersprachen für die Zeichenfläche verwendet, so auch in HTML5 oder C# oder Visual Basic ... .

Gruß
computerschrat
0 Punkte
Beantwortet von
Hallo computerschrat! Vielen lieben Dank erst einmal für Deine
Unterstützung. Das mit diesen 45°-Ellipsen ist mir zur Zeit echt ein
bisschen zu hoch, deshalb hab ich mein Projekt leicht verändert und
verwende nun lediglich eine senkrechte und eine vertikale Ellipse,
sowie einen Kreis der am Rand des Panel liegt und die Diagonalen
mache ich erst einmal mit normalen Linien.
Das mit dem Canvas werde ich auf alle Fälle mal probieren, aber dazu
brauche ich einfach etwas mehr Zeit.
Ich gehe mal davon aus, Du wirst also bestimmt wieder von mir hören
bzw. lesen, denn ich finde dieses Forum ganz gut.
Vielen Dank nochmal und LG, Claudia.
...