AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi DelphiX für Anfänger (2)
Tutorial durchsuchen
Ansicht
Themen-Optionen

DelphiX für Anfänger (2)

Ein Tutorial von Chegga · begonnen am 30. Dez 2004 · letzter Beitrag vom 29. Apr 2006
Antwort Antwort
Benutzerbild von Chegga
Chegga
Registriert seit: 5. Nov 2004
Hi,

hier also die Fortsetzung von Teil I.

Kapitel 3

Übernehmt das Beispiel aus DelphiX für Anfäner (1),
damit wir loslegen können.

Bilder bewegen

Um ein Bild auf der DXDraw Oberfläche zu bewegen, müssen wir 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 Variablen, die die X, Y Werte übergeben. Die anderen zwei Variablen werden für die Bewegung benötigt. Dazu schreiben wir folgendes:

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

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 der DXDraw und schreiben in das OnTimer Ereignis unseres Timer folgendes:

Delphi-Quellcode:
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
  if not DXDraw1.CanDraw then
    Exit; //dürfte bekannt sein
  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 bekanntsein
  DXDraw1.Flip; //dürfte bekannt sein
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).
Man kann die Geschwindigkeit des Timers beliebig einstellen,
in dem sie die Eigenschaft Interval ändert (in Millisekunden).

Nun startet das Programm mit Drücken auf F9
und das Bild bewegt sich hin und her.
(Siehe Beispielprogramm im Attachment)

MfG Marc

Hier geht es weiter zu DelphiX für Anfänger (3)

P.S.: Dieses Tutorial hat "MiGa" erstellt.
Es wurde von meiner Wenigkeit ein weing abgeändert.

[edit=Admin]Code-Tags in Delphi-Tags geändert. Mfg, Daniel[/edit]
[edit=sakura] Auf Wunsch Links zu den Tutorial 2 hinzugefügt. Mfg, sakura[/edit]
Angehängte Dateien
Dateityp: zip bilder_bewegen_162.zip (499,3 KB, 132x aufgerufen)
Grüße aus Kirchheim Teck
 
Benutzerbild von thepaul
thepaul

 
Delphi 7 Personal
 
#2
  Alt 7. Jan 2005, 19:12
gehts noch weiter mit den tuts?
Paul
  Mit Zitat antworten Zitat
Oxmyx
 
#3
  Alt 7. Jan 2005, 19:27
Wieso deklarierst du globale Variablen mit den Bezeichnern "x", "y", etc.? Das schreit ja nach späteren Fehlern.
  Mit Zitat antworten Zitat
Minz
 
#4
  Alt 11. Mär 2005, 09:21
@oxmyx

weil das hier für das Verständnis gar nichts zur Sache tut, wie da was deklariert ist...
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

 
Turbo Delphi für Win32
 
#5
  Alt 29. Apr 2006, 17:11
Ohne meckern zu wollen, da fehlt ein
DXDraw1.Surface.Fill(clBlack);
Nikolai Wyderka
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz