Wie kann ich eine Pictureboxe schnell und flüssig bewegen?

...komplette Frage anzeigen

1 Antwort

Es spielt sowieso keine Rolle, ob du nun 1 oder 10 ms eingestellt hast.

The default system-wide timer resolution in Windows is 15.6 ms, which means that every 15.6 ms the operating system receives a clock interrupt from the system timer hardware.

Quelle: http://download.microsoft.com/download/3/0/2/3027D574-C433-412A-A8B6-5E0A75D5B237/Timer-Resolution.docx

Diese (eigentlich) 15,625 ms ergeben sich aus dem "System Heartbeat", der typischerweise bei 64 HZ liegt. Durch unterschiedliche Einflüsse gibt es immer gewisse Schwankungen, weshalb ein Tick-Event des Timers auch erst nach 17 oder 20 Sekunden erneut ausgelöst wird. Mit einem solchen Timer-Objekt wirst du zumindest keine gescheite Lösung finden.

Es gäbe da noch Multimedia-Timers, die die größte Auflösung für die verwendete Hardware haben. Meiner Meinung nach solltest du aber den Grundsatz deiner Idee überarbeiten. Vielleicht kannst du die Positionsberechnung und -bewegung deiner Stangen zeit-optimieren. Eine andere Möglichkeit wäre die Stangen selbst zu zeichnen (anstatt resourcenbeanspruchende PictureBox-Steuerelemente zu verwenden) und dabei außerdem Bewegungsunschärfe reinzubringen, um die sprunghafte Bewegung zu kaschieren. Da wäre aber möglicherweise DirectX die bessere Wahl.

Antwort bewerten Vielen Dank für Deine Bewertung
ysz0507 18.02.2016, 16:51

Ok danke

0
ysz0507 20.06.2016, 20:47

Wie kann ich "Bewegungsunschärfe" reinbringen?

0
CrystalixXx 20.06.2016, 21:13

Mir ist ein Fehler in meiner Antwort aufgefallen:

[...] weshalb ein Tick-Event des Timers auch erst nach 17 oder 20 Millisekunden [...]

Es muss Millisekunden heißen.

Zu deiner Frage: Wenn du unbedingt bei deiner Methode bleiben willst, dann kannst du das durch Semitransparenz erreichen. Wenn sich die Stange von links nach rechts bewegt, dann kannst du vom linken Ende der Stange ausgehend nach links mehrere Pixel mit fallendem Alpha-Wert zeichnen. Kurz: Du zeichnest ein Pixel mit 25% Alpha, daneben eines mit 50%, dann mit 75% und dann deine Stange (in vollen 100%). Da kann man ein wenig herum experimentieren, ob die Alpha-Abstufungen linear oder exponentiell sein sollen.

0

Was möchtest Du wissen?