Sto usando una DoubleAnimation per anamizzare la proprietà Angle di un RotationTransform. Diverse volte al secondo, ho bisogno di cambiare la velocità della rotazione in risposta a dati esterni in modo che la rotazione acceleri e/o rallenti (senza intoppi) nel tempo. Attualmente sto facendo questo utilizzando un DoubleAnimation che si ripete sempre ,0-360,0 con la durata X, poi più volte al secondo:Modificare dinamicamente un'animazione di rotazione in WPF
- Afferra un nuovo valore dai dati esterni
- Modificare il tasso sui DoubleAnimation a quella valore
- riapplicare il DoubleAnimation alla proprietà Angle nuovo
Nota: ho trovato che ho dovuto cambiare il da e per le proprietà sull'animazione a "angolo corrente" e "angolo corrente + 360" - Fortunatamente per me RotationTransform non ha problemi con gli angoli > 360 gradi - per evitare di riavviare la rotazione dall'angolo zero.
La mia domanda è: è ragionevole? Non sembra così. Applicare continuamente nuove DoubleAnimations alla proprietà Angle su una trasformazione di rotazione sembra errato, un po 'come se stessi permettendo a WPF di animare la rotazione, mentre I sto animando personalmente la velocità di rotazione.
C'è un modo migliore?
Questo sarebbe molto apprezzato. – Bill
Grazie, sarò in grado di usarlo. È buffo che dobbiamo fare una chiamata al metodo (SetSpeedRatio), il che significa che non posso animare la variazione del rapporto di velocità con un'altra animazione, tutto in Xaml e tutto; ma questo sembra molto più corretto dell'applicazione di nuove animazioni in ogni momento per ottenere l'effetto. Grazie. – Bill
Questa risposta è stata molto utile nel nostro caso, ma c'è una differenza importante che non ha funzionato. almeno con WPF in WinRT. Il metodo SetSpeedRatio() non ha fatto nulla, quindi lo abbiamo modificato con la proprietà SpeedRatio e questo ha fatto il trucco. –