none
Array vom Typ Point RRS feed

  • 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
    Dienstag, 15. Juni 2010 12:35

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
    Donnerstag, 17. Juni 2010 06:19
    Moderator

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
    Donnerstag, 17. Juni 2010 06:19
    Moderator
  • 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
    Freitag, 18. Juni 2010 15:39
  • 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
    Samstag, 19. Juni 2010 18:35
    Moderator
  • 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
    Montag, 21. Juni 2010 06:08
  • 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
    Montag, 21. Juni 2010 12:06
    Moderator
  • Danke Martin,

    hört sich super an, aber wie fange ich am besten damit an. Meine Bücher geben das Know-How dafür nicht her.

    Hats du vielleicht noch einen Tip wie ich mir das Wissen dazu erarbeiten kann?

    Gruß Bernd


    Nothing Is As Easy As It Looks
    Montag, 21. Juni 2010 12:52
  • 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
    Montag, 21. Juni 2010 20:26
    Moderator
  • Hallo BerndBen!

    Hats du vielleicht noch einen Tip wie ich mir das Wissen dazu erarbeiten kann?

    Ich halte Schulungen in C++/CLI ab ;)

    Mit fehlt es aber aktuell an Zeit...

    Greeting
      Jochen


    Jochen Kalmbach (MVP VC++)
    Montag, 21. Juni 2010 20:59
  • Danke Martin, du hast mir sehr geholfen!

    Gruß

    Bernd


    Nothing Is As Easy As It Looks
    Dienstag, 22. Juni 2010 06:28
  • Hallo Jochen,

    danke für das Angebot, wo muß ich hinkommen?

    Gruß

    Bernd


    Nothing Is As Easy As It Looks
    Dienstag, 22. Juni 2010 06:30