Я использую DoubleAnimation для изменения свойства Angle объекта RotationTransform. Несколько раз в секунду мне нужно изменить скорость вращения в ответ на внешние данные, чтобы вращение ускорялось и / или замедлялось (плавно) с течением времени. В настоящее время я делаю это, используя DoubleAnimation, которая бесконечно повторяется от 0,0 до 360,0 с длительностью X, а затем несколько раз в секунду:
- Получите новое значение из внешних данных
- Измените скорость DoubleAnimation на это значение
- Повторно примените DoubleAnimation к свойству Angle еще раз
Примечание: я обнаружил, что мне пришлось изменить свойства To и From в анимации на «текущий угол» и «текущий угол + 360» - к счастью для меня RotationTransform не имеет проблем с углами> 360 градусов - чтобы предотвратить начало вращения снова с нулевого угла.
Мой вопрос: разумно ли это? Это не так. Непрерывное применение новых DoubleAnimations к свойству Angle при преобразовании вращения кажется неправильным - вроде как я разрешаю WPF анимировать вращение, в то время как я сам анимирую скорость вращения.
Есть ли способ лучше?