AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Portabilität der Grafik
Thema durchsuchen
Ansicht
Themen-Optionen

Portabilität der Grafik

Ein Thema von Semikolon · begonnen am 21. Jan 2007 · letzter Beitrag vom 21. Jan 2007
Antwort Antwort
Benutzerbild von Semikolon
Semikolon

Registriert seit: 11. Okt 2006
Ort: Dresden
39 Beiträge
 
Delphi 5 Standard
 
#1

Portabilität der Grafik

  Alt 21. Jan 2007, 00:57
Als ich in einem anderen Thread diesen Post gelesen habe:

Zitat von inherited:
Zitat von toms:
Zitat von Semikolon:
if key=vk_right then image1.left:=image1.left+100

Wenn ich dann also Rechts gedrückt halte bewegt sich das Image rasant schnell vorwärts.
...oder du veränderst die Konstante 100 und schreibst z.B + 20.
Was ziemlich Dumm wäre, weil dann die Geschwindigkeit mit der sich das Image bewegt von PC zu PC unterschiedlich ist.
Bin ich auf meine Frage gekommen und zwar:

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?
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Portabilität der Grafik

  Alt 21. Jan 2007, 01:03
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;
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von Semikolon
Semikolon

Registriert seit: 11. Okt 2006
Ort: Dresden
39 Beiträge
 
Delphi 5 Standard
 
#3

Re: Portabilität der Grafik

  Alt 21. Jan 2007, 01:06
Das waren ganz normale Windowsanwendungen,soll ich da trotzdem die Dosbox verwenden(ich hab sie)?
---
Könnte es vielleicht an den Timern gelegen haben?
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Portabilität der Grafik

  Alt 21. Jan 2007, 01:11

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
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#5

Re: Portabilität der Grafik

  Alt 21. Jan 2007, 10:55
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...
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  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 15:17 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