![]() |
Einen Punkt auf der Form zur Maus bewegen...
Moin,
Also es ist mir echt peinlich, aber ich bekomme es nicht hin. :oops: Ich habe einen Punkt auf einer Form (bzw. Bitmap) nun möchte ich diesen Punkt in Richtung Maus bewegen die sich über der Form befindet. Damit ihr wisst was ich mein' hänge ich mal ein Beispiel an. Das soll jetzt aber nicht so Sprunghaft wie im Beisiel funktionieren, sondern eher "gemütlich", aber nur wenn die Mouse über die Form kommt. Kann mir jemand helfen ? (mit ein bissel Code wäre nett) :wall: [edit=turboPASCAL]Anhang gelöscht.[/edit] |
Re: Einen Punkt auf der Form zur Maus bewegen...
Du errechnest einfach beim bewegen der Maus den Winkel, in dessen Richtung der Punkt wandern muß, damit er auf den Pfeil zugeht.
Und diesen Winkel nimmst du und weiß ihn dem Punkt zu (für die Bewegung). |
Re: Einen Punkt auf der Form zur Maus bewegen...
Sorry, ich habe nur noch X,Y Plus und Minus im Kopf, habe mir mit Sqrt und Sin und Cos das Gehirn gemartert aber eine anständige Lösung kommt nicht.
Ich habe den Punkt X und Y sowie die akt. Direction also zB. dx = -1 und dy = 1 (Richtung nach Links unten), dazu kommt noch sie MausPos. (mx, my) auf dem Bitmap. Wie stelle iches an damit die Richtung auf die Maus zeigt ? |
Re: Einen Punkt auf der Form zur Maus bewegen...
Mit "Maus.X - Punkt.X" und "Maus.Y - Punkt.Y" hast du ja den Abstand und die Richtung zwischen den beiden Punkten (Punkt und Maus).
Daraus kannst du doch einen Winkel errechnen? Und diesen Winkel nimmst du und berechnest damit die neue Bewegungsrichtung (dx und dy) für den Punkt. |
Re: Einen Punkt auf der Form zur Maus bewegen...
Zitat:
Wie stelle ich das an ? (mal für Dumme) |
Re: Einen Punkt auf der Form zur Maus bewegen...
Ich nehm gern ArcTan2 dafür ... erspart einem unnötiges rumhandtieren mit den inversen Sin/Cos-Funktionen :roll:
Delphi-Quellcode:
und mit den erhalten Winkel kannst du dann über Sin/Cos den neuen BewegungsVektor errechnen.
Winkel := ArcTan2(Y1 - Y2, X1 - X2);
|
Re: Einen Punkt auf der Form zur Maus bewegen...
Danke für deine Hilfe.
Lösung 1
Delphi-Quellcode:
Lösung 2
RichtungX := (MouseX-AktPosX) / sqrt( sqr(MouseX-AktPosX) + sqr(MouseY-AktPosY) ) * Schrittlänge;
RichtungY := (MouseY-AktPosY) / sqrt( sqr(MouseX-AktPosX) + sqr(MouseY-AktPosY) ) * Schrittlänge;
Delphi-Quellcode:
Winkel := ArcTan2(MouseX-AktPosX, MouseY-AktPosY);
RichtungX := Sin(Winkel) * Schrittlänge; RichtungY := Cos(Winkel) * Schrittlänge; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz