![]() |
Bildschirmschoner
Ich bin gerade dabei mir mein eignenden Schoner zu programmieren.
Nun komme ich aber nicht mehr weiter, folgendes..jeder kennt doch den Schoner von Windows.Ich glaub der heißt 3D-Objekt oder so na ja der, der sich von einer Seite zur anderen Seite des Bildschirmes bewegt.Also in allen Richtungen prallt. Hier was ich zur Zeit Habe
Code:
kann mir da jemand helfen?
var
Form1: TForm1; vx: Integer = 1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin Form1.DoubleBuffered:=True; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Image1.Left:=Image1.Left +vx; if Image1.Left>ClientWidth - Image1.Width-1 then vx:=vx*-1; if Image1.Left<1 then vx:=vx*-1; end; Danke im vorraus |
Hallo City Light,
vielleicht solltest Du uns verraten was denn genau nciht geht. Welche Zeit hast Du im Timer eingestellt? Grüsse, Daniel :hi: |
Hi Daniel
Nun Ich wollte ein Bild im meinen Schoner einbauen, und der sollte kreuz und quer auf dem Monitor umherwandern Den Timer habe ich auf 10 gestellt |
Hi,
was es machen soll hab ich kapiert, aber nciht was das Problem ist. Was passiert oder was passiert nicht? Stellt den Timer mal auf 100 oder 200ms. Probiere es aus. Alles was unter 50ms ist, ist für Windows eine reinen Tortur und Du kannst froh sein, wenn da überhaupt sich was bewegt. Versuch doch mal mit 5 oder 10ms eine Message anzuzeigen. Bei mir ist Windows mit solchen Zeiten schonmal abgestürtzt. Windows ist nunmal KEIN Echtzeitbestriebssystem. Das darfst Du nciht vergessen. Grüsse, Daniel :hi: |
Ich habs jetzt auf 100ms gestellt und siehe da es bewegt sich von link nach rechts :bounce2:
Nun wie bekomme ich aber das es sich in allen Richtungen bewegen kann :?: |
Hi,
ich habe es soeben ausprobiert. Es bewegt sich von links nach rechts. Na Toll. :roll: :wink: Das wollte ich wissen, man muss ja nciht immer alles selber ausprobieren. Übrigens, bei mir läuft es im prinzip auch mit 10ms. Jedoch ruckelt es arg stark. Nciht unter 50ms, dann sieht es gut aus. Ich werkel mal ein bisschen dran. Wenn Du möchtest das es sich in allen Richtungen bewegt, dann muss man da mit Randomize arbeiten und nciht mit festen links, rechts angaben, bringt ja nichts. Grüsse, Daniel :hi: |
Danke für deine Hilfe :D
ein Code schnipzel wäre echt prima da ich noch nicht so den Umgang mit Delphi habe Ich kann warten :hello: :spin: |
Hi City Light,
wen du willst, dass das Bild "kreuz und quer" herumfliegt, dann musst du auch eine Bewegung für die y-Richtung einbauen.
Code:
Wenn das Image in einem anderen Winkel fliegen soll, dann musst du nur den Startwert von vx bzw. vy ändern.
var
Form1: TForm1; vx: Integer = 1; vy: Integer = 1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin Form1.DoubleBuffered:=True; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Image1.Left := Image1.Left + vx; Image1.Top := Image1.Top + vy; if ((Image1.Left > (ClientWidth - Image1.Width - 1)) or (Image1.Left < 1) then vx := vx * -1; if ((Image1.Top > (ClientHeight - Image1.Height - 1)) or (Image1.Top < 1) then vy := vy * -1; end; MfG, d3g |
Hi,
bei dem Source von d3g: vor den then fehlt noch eine ) Die Variablen vx un vy dürfen nie den gleichen Wert haben, sonst bewegt sich das Bild nur in der Diagonalen. Grüsse, Daniel :hi: Nachtrag: ausserdem musst DU die Scrollbars von Form1 ausschalten, sonst Blitzen die manchmal auf. |
Hi,
so nun auch mein Beispiel:
Code:
Auch hier muss man leider die Scrollbars ausschalten, Vielleicht schaffst Du es selbst dies zu verhindern.
var
Form1: TForm1; vx, vy: integer; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin Randomize; vx := -10 + Random(20); vy := -10 + Random(20); end; procedure TForm1.Timer1Timer(Sender: TObject); begin Image1.Left := Image1.Left + vx; Image1.Top := Image1.Top + vy; if (Image1.Left > ClientWidth - Image1.Width - 1) or (Image1.Left < 1) then vx := vx * -1; if (Image1.Top > ClientHeight - Image1.Height - 1) or (Image1.Top < 1) then vy := vy * -1; end; Die Startrichtung ist immer unterschiedlich. Grüsse, Daniel :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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 by Thomas Breitkreuz