ein viereck eichnerisch bewegen



  • hi leute.
    ich code gerade ein bissl und das funzt net

    struct koord
    		{
    		 int x;
    		 int y;
    		};
    
                       koord ol;
    		koord or;
    		koord ul;
    		koord ur;
    

    das einmal. dann 4 variablen davon gemacht.
    wenn ich jetzt den oberen linken punkt anklicke und maus bewegen, soll er verschoben werden.

    void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X,int Y)
    {
           if(!istklick)
    		return;
    	if((ol.x==X||ol.x==X+1||ol.x==X-1)&&(ol.y==Y||ol.y==Y+1||ol.y==Y-1))
    	//+-1 der koordinat. so genau solls net sein.
             {
    	 ol.x=X;
    	 ol.y=Y;
    	}
    
    	zeichne(ol,or,ul,ur);
    
    void TForm1::zeichne(koord ol1,koord or1,koord ul1,koord ur1)
    {
     Form1->Canvas->MoveTo(ol1.x,ol1.y);
     Form1->Canvas->LineTo(or1.x,or1.y);
     Form1->Canvas->LineTo(ur1.x,ur1.y);
     Form1->Canvas->LineTo(ul1.x,ul1.y);
     Form1->Canvas->LineTo(ol1.x,ol1.y);
    }
    

    mein lehrer(der möchtegern) kann mir da auch net helfen. (ich glaube, ich habe nochmehr planung als der)
    ich hoffe, ihr wisst, wo mein problem ist und würde mich über eine antwort wahnsinnig freuen



  • grüner elch schrieb:

    ich hoffe, ihr wisst, wo mein problem ist

    Nein, und es wäre auch viel einfacher, wenn du es uns einfach sagst.
    "Funktioniert nicht" ist jedenfalls keine ausreichende Problembeschreibung.



  • Sorry, ich hatte gestern schon geschrieben, aber dann kam mir die Forums-Wartungsarbeit dazwischen.

    Du mußt die Abfrage im OnMouseDown-Event durchführen und dann das Flag 'IstKlick' setzen, im MouseMove-Event dann immer die Position (X,Y) neu setzen und zeichnen (nur wenn Flag gesetzt ist) und dann das Flag wieder im MouseUp-Event löschen.

    Logisch, oder?



  • Außerdem sollte auch die alte Linie gelöscht werden (durch überschreiben wenn möglich) sonst entsteht eine ganze Schar von Linien.


Anmelden zum Antworten