Benutzer mit den meisten Antworten
Array vom Typ Point

Frage
-
Hallo,
ich möchte eine Kurve per DrawCurve zeichen und benötige dazu ein Array vom Typ Point.
Da die Größe des Arrays variable sein kann habe ich folgendes "ohne Erfolg" versucht:
int x = this->lstBoxArrayX->Items->Count; array<Point> ^myPoint = gcnew array<Point>(x); for(int i = 0; i < x; i++){ //myPoint[i] = X-Y-Werte (aus Listboxen) zuweisen geht nicht }
Wo liegt hierbei mein Denkfehler?
Nothing Is As Easy As It Looks- Bearbeitet Robert BreitenhoferModerator Freitag, 18. Juni 2010 16:06 Formatierung
Antworten
-
Wie sieht denn genau Dein Statement aus?
Hier mal ein Beispiel:
array<Point>^ ptarray = gcnew array<Point>(3); ptarray->SetValue(Point(0,0),0); ptarray->SetValue(Point(1,1),1); ptarray[2] = Point(2,2);
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 18. Juni 2010 16:06
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 2. Juli 2010 09:54
Alle Antworten
-
Wie sieht denn genau Dein Statement aus?
Hier mal ein Beispiel:
array<Point>^ ptarray = gcnew array<Point>(3); ptarray->SetValue(Point(0,0),0); ptarray->SetValue(Point(1,1),1); ptarray[2] = Point(2,2);
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 18. Juni 2010 16:06
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 2. Juli 2010 09:54
-
Hallo, klappt super!
Vielen Dank!
Meine aktuelle Herausforderungn ist eine grafische Ebene (ähnlich wie Flash) zu schaffen, damit der User durch Erstellung und Veränderung von Graphen sich seine DMX-Werte (Lichttechnik) für eine Licht-Bühnenshow z. B. zusammenstellen kann.
Allerdings bin ich mir nicht mehr sicher ob meine Windows-Forms-Anwendung die richtig Wahl ist um ein gutes Ergebnis damit zu
erreichen. Das Zeichnen von "neuen" Graphen setzt vorraus das ich die "alten" mit der Hintergrundfarbe überzeichne.
Muß ich auf Dirext X zurückgreifen, oder kann ich bei meiner Anwendung bleiben?
Vielen Dank für jeden Tip!
Nothing Is As Easy As It Looks -
Wenn Du was neues zeichen willst musst Du sicherich das alte löschen...
Ich verstehe Deine Frage nicht. Auch ob Du bei Windows Form bleiben sollst kann ich Dir schwerlich beantowrten.
Was denkst Du denn was Dir DirectX an Vorteilen bietet?
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Danke für deine Antwort!
Mit "gc->DrawLine(Pens..." zeichne ich ohne Probleme Hilfslinien direkt auf meine aktuelle Form. Durch Click mit der linken Maustaste
setze ich nun Punkte in das Diagramm welche mit geraden Linien verbunden werden. Auch kein Problem. Jetzt möchte ich einen bestimmten Diagrammbereich markieren können wie das bei Windowsanwendungen so üblich ist. Problem, denn mit
gR->DrawRectangle(pnRedDot, x, y, w, h); überzeichen ich den markierten Bereich.
Vielleicht ist mir geholfen wenn ich wüßte wie man die aktuelle Form als "Bitmap" speichern könnte.
Danke für jede Hilfe!
Bernd
Nothing Is As Easy As It Looks -
Ist Dir klar, wie das Zeichnen eigentich abläuft? Du bekommst Ein Paint Event (WM_PAINT) immer wenn die Client Area neu gezeichnet werden soll.
1. Kannst Du alles (inkl. Drag-Rect) im Paint Handler mit zeichnen. Der Drag mit der Maus invalidiert nur die Client Area.
2. Schneller ist es das Rectangle mit einem XOR zu Zeichnen, dann kann man mit einem zweiten XOR einfach den Ursprungszustand wieder herstellen.
Das Ganze kann man noch mit einem Flag in der Klasse regeln ob ein Drag-Rect vorhanden ist und gelöscht werden muss...
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
-
Die Grundlagen in Windows Forms sind aber ähnlich wie bei der Windows API: Ein Fenster bekommt eine Nachricht (Paint-Event), wenn es sich Zeichnen soll... Wenn man will das ein Fenster sich zeichnet, erklärt man einen bestimmten Bereich des Fensters für ungültig (siehe Invalidate Methode).
In dem "Petzold" Programming Windows with C# wird gleich in den ersten Kapiteln genau über die Grundlagen bzgl. Paint Event etc. geschrieben...
Ich kann mir kaum vorstellen, dass ein Buch diese Grundlagen nicht behandelt.
PS: Ich bin kein Managed-Welt-Spezialist... mit C# und C++/CLI erstelle ich zumeist nur Backendprogramme und Schnittstellen zwischen managed und nativer Welt.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de