Zitat von
Daniel B:
Hast du bestimmte einstellungen fürs Image und TrackBar? Wenn ich das alles bei mir laufen lasse, ist es in ein paar ms fertig.
TrackBar.Max muss 3000 sein.
Zitat von
SirThornberry:
Zum Quelltext selbst: Ich finde es etwas ungeeignet abhängig von der Anzahl der Schleifendurchläufe eine bestimmte Anzahl an Elypsen zu zeischnen. In 10 Jahre ist das ganze eventuell so schnell (je nach Rechner) das ein überlauf entsteht. Zudem dürfte die CPU-Auslastung auf 100% stehen während der Ausführung. Ich fände es sinnvoller wenn Y anahand der verstrischenen Zeit berechnet wird.
Ist auch nur in diesem kleinen Programm so, weil es mur ja nur darum ging, auf den Fehler aufmerksam zu machen. Hab ich so gemacht, damit der Quelltext möglichst kurz und einfach ist. Bei dem eigentlichen Programm, in dem mir das Problem aufgefallen, handelt es sich um ein Programm zur Simulation von physikalischen Würfen (schräger, senkrechter, waagerechter Wurf etc.). Dabei wird die vorherige Ellipse dann immer wieder gelöscht und die aktuellen Koordinaten werden in Abhängigkeit von der vergangenen Zeit berechnet.
Zitat von
SirThornberry:
Zudem macht es keinen Sinn durchweg die Schleife mit voller Last laufen zu lassen. Ich würde da noch ein kurzes Sleep(20) einbauen damit die CPU nicht unnötig auf 100% Leistung hoch geschraubt wird. Zudem könnte mann dann davon ausgehen das unbabhängig von der Geschwindigkeit der CPU die Schleife ungefähr gleich oft durchlaufen wird auf jedem Rechner.
Das mit Sleep könnte ich machen. Aber außer der CPU-Auslastung sehe ich kein Problem darin, dass die Schleife auf jedem Rechner unterschiedlich schnell durchlaufen wird. Je öfter sie durchlaufen wird, desto öfter wird das Image aktualisiert. Die Geschwindigkeit, mit der sich die Kugel im Raum bewegt, ist also nicht abhängig von der Rechnergeschwindigkeit.
Zitat von
SirThornberry:
Für die Fortschrittsanzeige ist übrigens auch eine Progessbar besser geeignet als eine Trackbar. Die Trackbar ist eigentlich dafür gedacht das der User den Wert ändern kann was bei deinem beispiel ja aber nicht geht weil du in der Schleife den wert immer korrigierst und im OnChange der Trackbar ja nicht reagierst sondern dort wo du den Wert automatisch setzt.
Einen TrackBar hab ich verwendet, weil ich das Wurf-Programm später so verbessern will, dass man (wie im MediaPlayer bei Filmen oder Musik) durch verschieben des TrackBars bequem an eine bestimmte Stelle gelangen kann und die Position der Kugel zu diesem Zeitpunkt dann auf dem Image gezeichnet wird.
Ich werde das fertige Programm dann bei Gelegenheit wahrscheinlich auch mal hier vorstellen.