![]() |
Delphi-Version: 6
Objekte "schnell" bewegen
Hallo,
ich bin dabei mir ein Programm mit mehreren, den Bildschirm füllenden Komponenten zu schreiben. Um zwischen diesen Komponenten umzuschalten, möchte ich keine verschiedenen Formulare benutzen, sondern eine Art "Slice-Effekt" verwenden. Dafür verwende ich im Moment einfach eine Schleife (Zum Testen eine For-Schleife, später wirds wohl eine while-Schleife).
Delphi-Quellcode:
Ich habe es auch mal mit Application.processmessages versucht, doch leider auch ohne Besserung, denn die Bewegung soll relativ schnell sein (knapp 1 Sekunde), ist aber seeeehr langsam.
for i:=0 to Screen.width do
begin Objekt1.left:=Objekt1.left-1 Objekt2.left:=Objekt2.left-1; Objekt1.refresh; Objekt2.refresh; end; Ich habe auch mal 5 pixel Schritte probiert, es geht zwar schneller, ruckelt aber... Wie kann ich das ändern? Viele Grüße! |
AW: Objekte "schnell" bewegen
Zitat:
nun von 0 to 1024 ein Objekt bewegen und neuzeichen, bleibt nun mal 1024durchläufe plus die Zeit des neuzeichnen. Wie schnell muss da ein Prozessor sein der das in < 1 sek macht :gruebel: Ohne auf Direktx oder ander GEngine zu zugreifen dürfte dies wohl nicht gehen. alfold |
AW: Objekte "schnell" bewegen
Vielleicht, wenn man nicht die Objekte selbst, sondern nur ein Abbild deren bewegt
|
AW: Objekte "schnell" bewegen
Hallo,
danke für die schnelle Antwort. Natürlich ist das ziemlich viel für eine Sekunde. Aber 20 Sekunden find ich ist auch etwas viel... Außerdem liegt die Prozessorauslastung nicht bei 100%, sondern zwischen 50 und 70%. Ich habe mir mal vor einiger Zeit zum Testen hier einen Code runtergeladen, wo mehrere Kugeln kollidieren und abprallen (Masse und Winkel berücksichtigt). Das läuft mit bis zu 100 Kugeln auch sehr flüssig... Ich guck mal, wie das mit DirectX funktionieren könnte. Viele Grüße! @mkinzler: Könntest du das etwas näher beschreiben, bitte? |
AW: Objekte "schnell" bewegen
Was sind das für Objekte?
Wenn es nur darum geht Beispielsweise mehrere PNG's zu animieren: ![]() |
AW: Objekte "schnell" bewegen
Bisher ist es ein TImage (wird später ersetzt durch eine eigene Komponente, Tochterkomponente von TImage) und eine TLMDListBox.
Viele Grüße! Edit: Ich habe mal ein bisschen rumprobiert: Wenn ich das Image mit gedrückter Maustaste verschieben lasse, geht das schnell und relativ flüssig... Vielleicht noch zum allgemeinen Verständnis: Das soll sowas wie horizontales Scrollen sein... |
AW: Objekte "schnell" bewegen
wenn Du eh eine eigene Komponente erstellen willst, findest Du in o.G. Link vielleicht die eine oder andere Anregung (ich würde von TGraphicControl ableiten).
|
AW: Objekte "schnell" bewegen
Ich möchte ja nur eine von mehreren erstellen...
|
AW: Objekte "schnell" bewegen
Hallo,
schau dir doch mal AnimateWindow an. Habs mit einem Memo getestet - geht wunderbar.
Delphi-Quellcode:
[Edit]
procedure TForm1.Button1Click(Sender: TObject);
begin AnimateWindow(Memo1.Handle, 200, AW_BLEND or AW_HIDE); end; Mist - geht doch nicht! Wirkt wie ein Memo1.Hide - egal welche Zeit angegeben wird. |
AW: Objekte "schnell" bewegen
Hallo,
ja ich habs auch ausprobiert. Ich möchte es aber auch nicht ausblenden, sondern verschieben... Also eher AW_SLIDE?! Problem 2: TImage hat kein Handle... Viele Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 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