Forum: PC-Programmierung Hilfe zu C# Code


von Mirko (Gast)


Lesenswert?

Ich möchte mit C# eine Parabel grafisch ausgeben.
Dazu habe ich mal diesen Code bei mir ausgeführt:

Graphics g = Graphics.FromHwnd( this.Handle);
Point[] points = {
                   new  Point(0, 70),
                   new Point(50, -70),
                   new Point(100, 8),
                   new Point(150, 8),
                   new Point(209, -5)
                 };
Pen pen = new Pen(Color.FromArgb(255, 0, 0, 255));
g.DrawCurve(pen, points);

Wie kann man eigentlich doe POINTS automatisch erweitern bzw. neue
Punkte automatisch hinzufügen?
In diesen Beispiel sind diese Fest vorhanden.

von Wilfried Nesensohn (Gast)


Lesenswert?

Graphics g = Graphics.FromHwnd( this.Handle);
Point[] points = {
                   new  Point(0, 70),
                   new Point(50, -70),
                   new Point(100, 8),
                   new Point(150, 8),
                   new Point(209, -5)
                 };
Pen pen = new Pen(Color.FromArgb(255, 0, 0, 255));
g.DrawCurve(pen, points);

Probiers mal mit:

ArrayList Punkte = new ArrayList();
...
Punkte.Add(new Point(0, 70));
Punkte.Add(...)
// Hier beliebig viele Punkte hinzufuegen, loeschen, kopieren,
sortieren usw.
..

Pen pen = new Pen(Color.FromArgb(255, 0, 0, 255));
g.DrawCurve(pen, Punkte.ToArray(Point))


Siehe auch:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemcollectionsarraylistclasstoarraytopic2.asp

Wie immer ohne Gewaehr...

von Mirko (Gast)


Lesenswert?

Ich habe mal in meinem Projekt diese Sache mal ausprobiert. Leider
funktioniert da gar nix. Diesen AUsdruck "Punkte.ToArray(Point)" in
DrawCurve nimmt der compiler nicht an.

Ich stelle mir die ganze Sache so vor:
Ich habe ein Array, indem die ganzen x,Y Koordinaten enthalten sind.
Anschließend möchte ich dann mit dieser Anweisung "g.DrawCurve(pen,
Punkte.ToArray(Point))" die Kurve grafisch ausgeben.

Wie mkönnte man so was in C# realisieren?

von Sebastian (Gast)


Lesenswert?

>Pen pen = new Pen(Color.FromArgb(255, 0, 0, 255));
g.DrawCurve(pen, Punkte.ToArray(Point))

-> Punkte.ToArray(Point) ???? warum

point ist doch schon ein array.
dann müsste das doch so gehen:
g.DrawCurve(pen, point);

Sebastian

von Pyramidenbastler (Gast)


Lesenswert?

Er will das ganze "dynamisch" machen, also Punkte hinzufuegen koennen.
Deshalb die ArrayList, und eine ArrayList ist eben kein Array, kann aber
ein solches liefern. Wenn das DrawCurve(...) mit Arrays funktioniert,
sollte es doch auch mit ArrayList.ToArray(...) funktionieren.

Ob man da jetzt ein Type Objekt erstellen muss oder nicht, das sollte
der Fragesteller doch schon selber herausfinden koennen, oder? Man
koennte es sogar mit der MSDN probieren, wo das ganze sehr
wahrscheinlich stehen wird.

Die prinzipielle Funktionsweise ist aber (hoffentlich) ersichtlich.
Einfach anstelle des Arrays eine ArrayList verwenden und diese dann bei
Bedarf umwandeln.

PS: Wenn du den ganzen Thread gelesen haettest, waere dir vielleicht
aufgefallen dass deine Loesung schon im Anfangspost steht ;)

PPS: Aussagen wie "Diesen AUsdruck "Punkte.ToArray(Point)" in
DrawCurve nimmt der compiler nicht an." veranlassen mich dazu den
ganzen Thread einfach zu ignorieren, es sei denn der Compiler meldet
wirklich "Ich nehme diesen Ausdruck nicht an".

PPPS:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemobjectmemberstopic.asp

Das sollte jetzt aber wirklich reichen ;)

von Pr0gg3r (Gast)


Lesenswert?

Hallo,

der Thread ist zwar schon ewig her aber der Vollständigkeit halber ist 
die korrekte Umwandlung:

g.DrawCurve(pen, (Point[])Punkte.ToArray(typeof(Point));

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.