DelphiX-Tutorial für Anfänger

Ursprünglich erstellt von MiGa Mail Homepage (Danke!!)
Design-Anpassung und Veränderung von Simon

 

Kapitel 3

Sie müssen das Beispiel des vorherigen Kapitel übernehmen.

Bilder bewegen

Um ein Bild auf der DXDraw Oberfläche zu bewegen, müssen wir nur immer die
X bzw. Y-Koordinate des DXImageList1.Items[0].draw(dxdraw1.surface,0,0,0) Befehls ändern. Dazu werden wir die DXTimer Komponente benutzen.
Als erstes brauchen wir aber zwei Variable, die die X, Y Werte übergeben. Die anderen
zwei Variablen werden für die Bewegung benötigt. Dazu schreiben wir folgendes:

 var
  Form1: TForm1;
  x:integer=0;
  y:integer=0;
  vx:integer=1;
  vy:integer=1;

implementation

Da wir nicht wollen, dass das Bild nur angezeigt wird, wenn wir auf die Oberfläche
drücken, entfernen wir den Code aus dem OnClick Ereignis und schreiben in das
OnTimer Ereignis unseres Timer folgendes:

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
  if not DXDraw1.CanDraw then
    Exit; {dürfte bekannt}
  x:=x+vx; {Bewegung um vx in die X-Richtung}
  y:=y+vy; {Bewegung um vy in die Y-Richtung}
  if x<=0 then
    vx:=vx * - 1;
{wenn das Bild am linken Rand ist, soll es sich in die
Gegenrichtung bewegen} if x>=dxdraw1.width-dximagelist1.Items[0].width then vx:=vx * - 1;
{wenn das Bild am rechten Rand ist, soll es sich in die
Gegenrichtung bewegen} if y<=0 then vy:=vy * - 1;
{wenn das Bild oben ist, soll es sich in die Gegenrichtung bewegen} if y>=dxdraw1.height-dximagelist1.Items[0].height then vy:=vy * - 1;
{wenn das Bild unten ist, soll es sich in die Gegenrichtung bewegen} dximagelist1.Items[0].draw(DXDraw1.Surface, x,y, 0); {dürfte bekannt} DXDraw1.Flip; {dürfte bekannt} end;

Durch die oben geschriebenen if-Bedingungen bewirken wir, dass das Bild im Fenster herum"bounced" (sich nicht aus dem Fenster bewegt sondern sich zurück bewegt).
Sie können die Geschwindigkeit des Timer beliebig einstellen, in dem sie die Eigenschaft Interval ändern (in Millisekunden).

Wenn sie jetzt F9 drücken, bewegt sich ihr Bild hin und her.

 

<<Vorheriges Kapitel>>   <<Nächstes Kapitel>>