Ich habe versucht, eine Leinwand zu verschieben, aber ich habe Probleme mit den Timern.WPF: Bester (zuverlässiger) Weg, um ein Canvas UND einen Monitor zu übersetzen (Jeder Schritt)
habe ich versucht, zwei verschiedene Methoden:
Erste Methode mit der BeginAnimation
Funktion war, und die zweite mit DispatcherTimer
Zecken, aber sie sind beide sehr unzuverlässig.
Ich muss jeden Schritt der Übersetzung überwachen. Mit der ersten Methode, die ich versuchte (BeginAnimation
), habe ich die Kollisionserkennungslogik im Changed
Ereignis gemacht, und mit der zweiten Methode (DispatcherTimer
) mache ich die Kollisionserkennungslogik im Tick
Ereignis des Timers.
Das Problem ist, dass beide sehr unzuverlässig sind. In dem Sinne, dass in meiner Kollisionserkennungslogik die Zeichenfläche die Übersetzung stoppen sollte, wenn die TranslateTransform
Y
Eigenschaft < = 0 ist (technisch, wenn sie jeden Schritt überwacht, sollte sie jedes Mal bei 0 enden), aber mit beiden Methoden Ich habe versucht, es variiert, wenn es aufhört. Zum Beispiel, manchmal stoppt es bei 0, manchmal bei -1, -2, -3 und manchmal sogar bei -4.
Also was ist mit den Diskrepanzen? Warum überwacht es nicht jeden Schritt so, wie es soll?
Was kann ich tun, um diese Leinwand zu animieren und wirklich jeden Schritt zu überwachen? Ich meine jeden Schritt ... jedes Pixel, das es bewegt