www.mikrocontroller.net

Forum: PC-Programmierung Hilfe zu C# Code


Autor: Mirko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Wilfried Nesensohn (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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=...

Wie immer ohne Gewaehr...

Autor: Mirko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Pyramidenbastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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=...

Das sollte jetzt aber wirklich reichen ;)

Autor: Pr0gg3r (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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));

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.