![]() |
Mausbewegung => Bildbewegung...
Moin.
Ich will in meinem Programm so machen, dass wenn man die Maus schneller bewegt das das Bild sich auch schneller bewegt, Wie geht das? |
:wiejetzt:
Könntest du eventuell deine Frage etwas präziser stellen... |
Also gut. Falsch geschrieben, haste Recht. Also ich glaub ihr alle hab als Kind mit Magneren gespielt. Jeder weist doch das positiven Polen sich gegenseitig abstossen. Genau so einen Effekt will ich realiesieren. Also der Mauszeiger soll ein "Magnet" sein, und das Bild.
Ist es jetzt vieleicht etwas verständlicher? :wink: |
Was hat das mit der Bewegung zu tun? Meine physikalischen Grundlagen meinen sich zu enstsinnen, dass es nur mit der Entfernung zu tun hat. Teste mit nem Timer alle X ms die Entfernung, und je nach der Enfernung (mit der Wurzel von ihr) bestimmst du den Einfluss, denn der Magnet hat und verschiebst das Bild...
...das ganze dürfte aber ziemlich ruckeln... |
Soooooooooooooooooooooooooooooooooooooong! Sorry, hab nichts kapiert :oops: kannst du bitte etwas genauer erklären.=>Quelltext :?:
Danke. Grüße NeoDeluxe :hi: |
Hi,
bin mir nicht sicher ob ich Dich verstanden habe, aber, Du kannst im "OnMouseMove" des Formulares, über Zugriff auf die X/Y-Koordinaten der Maus, Top/Left des Image setzen. Könnte dann etwa so aussehen:
Delphi-Quellcode:
Und das ganze hängt dann natürlich von der Geschwindigkeit der Maus ab! Ich denke das ist es was Du willst, hoff ich. ;)
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); begin Image1.Top := Y; Image1.Left := X; end; Grüsse, Daniel :hi: |
Zitat:
|
Hai NeoDeluxe,
mal als Gedankenmodel: Du ermittelst den Mittelpunkt deines Bildes. Jetzt ermittelst Du die Position der Maus. Jetzt berechnest Du den Abstand zwichen den beiden. Wenn dieser abstand unter einen bestimmten Wert kommt verschiebst Du dein Image von der Maus weg bis der mindestabstand wieder erreicht ist. |
Soooooooooooooooooooooooooooooooooooooong! Sorry, hab nichts kapiert kannst du bitte etwas genauer erklären.=>Quelltext
Danke. Grüße NeoDeluxe :hi: |
Zitat:
Na gut... hier der Quelltext (ist nur so auf die schnelle geschrieben)
Delphi-Quellcode:
Was ich mache:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); var bild_mitte : TPoint; min_abstand : Int64; abstand, dif_x, dif_y : Extended; links, oben : Integer; begin bild_mitte.x := Image1.Left + (Image1.Width div 2); bild_mitte.y := Image1.Top + (Image1.Height div 2); min_abstand := 300; links := 0; oben := 0; dif_x := bild_mitte.x - x; dif_y := bild_mitte.y - y; if (dif_x < 0) then begin dif_x := dif_x * -1; end; if (dif_y < 0) then begin dif_y := dif_y * -1; end; abstand := Round(sqrt((dif_x * dif_x) + (dif_y * dif_y))); //Abstand der Maus zum Bild; if (abstand < min_abstand) then begin if (y <> bild_mitte.y) then begin if (y < bild_mitte.y) then begin oben := -1; end else begin oben := +1; end; end; if (x <> bild_mitte.x) then begin if (x < bild_mitte.x) then begin links := -1; end else begin links := +1; end; end; image1.Left := image1.left - links; image1.top := image1.top - oben; end; end; Ich ermittele den Mittelpunkt des Bildes.
Delphi-Quellcode:
Dann berechen ich die entfernung zur maus:
bild_mitte.x := Image1.Left + (Image1.Width div 2);
bild_mitte.y := Image1.Top + (Image1.Height div 2);
Delphi-Quellcode:
Satz des Pyt: a² + b² = c²
abstand := Round(sqrt((dif_x * dif_x) + (dif_y * dif_y))); //Abstand der Maus zum Bild;
Und jetz prüfe ich nur noch ob die Maus oberhalb, unterhalb, links oder rechts vom Bild ist und verschiebe es entsprechend. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:02 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