Ich verwende das OnIdle-Ereignis für einige einfache Animationen, und es funktioniert alles in Ordnung. Wenn der Benutzer jedoch beginnt, das Fenster zu verschieben oder seine Größe zu ändern, wird das OnIdle-Ereignis beendet, bis der Verschiebe-/Größenänderungsvorgang abgeschlossen ist.Delphi: Erkennen von Anfang und Ende des Fensters bewegen
Ich muss erkennen, wenn dies passiert, so dass ich alle Animationen anhalten kann. Aber wie erkenne ich die Bewegung des Fensters?
Mit OnIdle ist nicht wirklich eine gute Idee, da es zu 100% CPU-Last auf dem aktiven Kern verursachen. Verwenden Sie stattdessen ein Timer-Ereignis, das zwei Vorteile hat: Es wird auch in der sekundären Nachrichtenschleife ausgelöst, so dass die Animation während der Verschiebung/Größenänderung fortgesetzt wird (was beim vollständigen Ziehen des Fensters geschehen sollte); und Sie können eine vernünftige Anzahl von Animationsschritten pro Sekunde einstellen, unabhängig von der Systemgeschwindigkeit. – mghie
Timer vs Leerlauf ist ein interessantes Thema. Beide haben Vor- und Nachteile, aber für meine kleinen dekorativen Animationen wird onidle gut funktionieren. – Vegar
Solche "kleinen dekorativen Animationen", wenn $ Benutzer sie nicht deaktivieren kann, können eine Menge Akkulaufzeit auf einem Laptop kosten. Außerdem stehlen Sie aktiv CPU-Zyklen von anderen Anwendungen. Probieren Sie es selbst aus, in Wirklichkeit hat OnIdle nur Nachteile. – mghie