Мигает в моей анимации перехода wpf

Я пытаюсь добиться пользовательской анимации перехода с эффектом тени на изображении. Я использую систему, которую я сделал для задания графического упрощения функций Безье, и я обрабатываю все данные сплайна в классе под названием Spline.

Я анимирую свойство времени, отправленное статическому методу Сплайна, чтобы вычислить данные Безье для упрощения. затем я получаю вычисленное значение, которое отправляю в свойство Time моего эффекта шейдера, но я не могу использовать beginAnimation для этого перехода, потому что класс, воспроизводящий анимацию, не является пользовательским интерфейсом и уже наследуется от абстрактного класса.

Если я хочу использовать beginAnimation, я должен заставить абстрактный класс наследовать от dependencyObject, чтобы использовать свойство зависимости в качестве параметра BeginAnimation, но я получаю эту ошибку

this.BeginAnimation(TimeProperty, anim);


"MyClass" не содержит определения для BeginAnimation и метода расширения. BeginAnimation, принимающий аргумент frist типа "MyClass", может быть найден (если вы пропустили директиву using или ссылку на сборку)

вся эта система зависимостей / анимации не соответствует моим потребностям, так как я не работаю над пользовательским интерфейсом напрямую, и я полностью застрял сейчас

Любая идея?

(Я использовал dispatcherTimer, чтобы сделать трюк, но когда анимация закончилась, я могу видеть цвет фона моего приложения в течение полсекунды, а затем наконец появляется мое второе изображение, но я не хочу этого поведения, так как оно будет продаваться...)

2 ответа

Решение

Я наконец-то использовал Storyboard для достижения этой цели, используя наследование объекта Dependency в моем абстрактном классе.

И даже если не очень хорошо использовать систему Sotryboard / dependencyProperty для не-пользовательского интерфейса (на мой взгляд), это работает.

У меня есть раскадровка для анимации свойства DependencyProperty с именем Time в MyClass от 0 до 1. В PropertyChangedCallback of Time я вычисляю новое значение времени в зависимости от моей пользовательской функции замедления сплайна, а затем привязываю его к свойству Progress моего шейдера.

все равно спасибо за беспокойство.

Используйте анимацию ключевого кадра. Вы можете добавить отдельные кадры к нему. Например, вы можете скрыть что-то каждый второй ключевой кадр.

Другие вопросы по тегам