![]() |
Portabilität der Grafik
Als ich in einem anderen Thread diesen Post gelesen habe:
Zitat:
Situation1:Ich habe vor langer Zeit Visual Basic Programme entwickelt auf einem 450mhz k6-2 in 800x600.Auf meinem neuen Laptop läuft aber alles viel zu schnell ab.Ich habe damals die Bewegung der Bilder über .left=.left+irgendwas und Timer gesteuert. Situation2:Ich habe fürs Studium ein Programm in Delphi 5 gemacht,was lineare Funktionen grafisch darstellt.Ich habe Leider war dieses nur auf einer bestimmten Auflösung ausführbar,bei kleineren Auflösungen als 1280x800(entwicklungsauflösung) war was von dem Formfenster abgeschnitten. Wie kann ich Punkt 1 und 2 in Delphi vermeiden? :o |
Re: Portabilität der Grafik
Für Situation 1:
DosBox benutzen oder Programme schreiben welche ein "MainLoop" enthalten, in denen nur alle X Millisekunden auf, zB Keys reagiert wird. zB mit dem OnIdle-Event der Application. Dieses einer eigenen Funktion zuweisen und dort soetwas wie
Delphi-Quellcode:
if GetTickCount>StartTickcount+250 then
begin StartTickCount:=GetTickCount; DoThis:=DoThat(42); end; |
Re: Portabilität der Grafik
Das waren ganz normale Windowsanwendungen,soll ich da trotzdem die Dosbox verwenden(ich hab sie)?
--- Könnte es vielleicht an den Timern gelegen haben? :| |
Re: Portabilität der Grafik
:wall:
Ich habe QuickBasic gelesen, frag mich nicht warum. Sorry. Dann natürlcih nicht DosBox. Wegen den Timern: kommt auf die Timer an und deren Interval |
Re: Portabilität der Grafik
servus,
das stichwort wäre timebased movement. Das heisst du rufst mit einem timer, einem thread oder in einer repeat Schleife wie gewohnt deine Bewegungsprozedur auf. Der Knackpunkt kommt jetzt. Du guckst bei jedem Aufruf der Bewegungsprozedur nach wieviel Zeit seit dem letzten Aufruf vergangen ist und gehst entsprechend viele Schritte in die Gewünschte Richtung. Wenn du also festlegst, dass du pro Sekunde gerne 100 Pixel gehen möchtest, gehst du mit dieser Methode auf _jedem_ Rechner auch 100 Pixel pro Sekunde. Auf schnellen Rechnern wengiger Ruckelnd, da die Prozedur öfter und mit kleineren Schritten ausgeführt wird, und auf langsameren eben ruckelnder. Um an die zeitliche Differenz zu kommen hilft gettickcount(); Zu dem zweten Problem wüsste ich allerdings auch keine wirklich gute Lösung. Ich schreib meine Programme immer so das sie unter 1024er Auflösung laufen, denn niedrigere hat kaum noch jemand. Du müsstesr die Komponenten auf deiner Form halt an die Größe der Form binden und alles dynamisch halten. Allerdings sieht es dann bei kleinen Auflösungen gequetscht aus und bei größeren ist zuviel Platz. Da hab ich bisher auch noch keine vernünftige Lösung gefunden... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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