Bild mit bestimmter Geschwindigkeit verschieben...

Crazy-Worx

Grünschnabel
Ich möchte ein Bild picture mit einer bestimmten Geschwindigkeit speed verschieben!
Gibt's dafür ne allgemeingültige Funktion oder muss man das Pixel für Pixel verschieben ?
 
du willst ein image mit deinem code auf dem formular verschieben? versteh ich das richtig?

dazu würd ich mit einem timer bei jedem ontimer-event das image um eine bestimmte anzahl pixel verschieben. damit kannst du dann auch die geschwindigkeit einstellen (timer-intervall, anzahl pixel).
 
Du kannst dafür die Komponente Timer verwenden, die Du unter System findest. Ein Timer ist wie eine Schleife, wobei Du einstellen kannst wie schnell sie läuft, z.B. jede Sekunde ein Durchlauf.

Mach einen Doppelklick auf den Timer und trag dann zum Beispiel folgendes ein:

Code:
procedure TForm1.Timer1Timer(Sender: TObject);
var
   x : integer;
begin
   x:=1;
   Image1.Left:=Image1.Left+x;
end;
Den Speed des Bildes kannst Du variieren, indem Du x und die Timer-Eigenschaft Interval veränderst.


*edit* zu spät :p
*edit* hey das läuft ja richtig schön flüssig =)
 
Zuletzt bearbeitet:
Das Problem is, das es auch schräg verschoben werden muss...

...also z.B. von links unten bis rechts mitte oder so...und das ist etwas sehr aufwändig jeden Pixel zu berechnen!
Gibt's da nix einfacheres ?
 
ha! erster, erster. :p

dabei bin ich nicht mal eine minute vorher erst wieder zu hause angekommen.


klar läuft das mit einem timer schön flüssig (zumindest auf pc's jenseits der 100mhz-grenze). aber bei niedrigen intervallen (so ca. 50ms - niedriger geht's unter win9x eh nicht) oder echten schleifen dürfte das anfangen zu flackern.
bei einer richtigen schleife (for, while, do, repeat, ...) würd ich im schleifenkörper aber noch die anweisung
Code:
Application.ProcessMessages;
mit einbauen, weil sich das bild sonst nicht verschiebt. ;)
 
...also z.B. von links unten bis rechts mitte oder so...und das ist etwas sehr aufwändig jeden Pixel zu berechnen!
Gibt's da nix einfacheres ?

nein, was einfacheres gibt's da nicht. wenn du das schräg verschieben musst, dann änder halt die eigenschaften top und left gleichzeitig. und frag ab, ob Image1.Top + Image1.Height mit Form1.ClientHeight übereinstimmt, dann bleibt das bild immer im formular.

btw: du musst nicht jeden pixel neu berechnen, sondern einfach nur den abstand eingeben, um den das image verschoben werden soll.
 
dabei bin ich nicht mal eine minute vorher erst wieder zu hause angekommen.
grml, dabei hab ich extra nachgeschaut ob Du grad da bist! :p ;)
...dürfte das anfangen zu flackern.
Flackern tut es auch so bei mir, aber flüssig ist es.



Wenn sich das Bild linear bewegen soll ist das doch ganz einfach:

Image1.Left:=Image1.Left+1;
Image1.Top:=Image1.Top-3;
 
Zuletzt bearbeitet:
Zurück