在我的wpf过渡动画中闪烁

时间:2012-08-13 12:03:17

标签: wpf animation transition beginanimations

我正在尝试在图像上实现具有阴影效果的自定义过渡动画。 我正在使用一个系统来指定缓动Bézier函数graphicaly并在一个名为Spline的类中处理所有样条数据。

我正在动画时间属性发送到Spline的静态方法来计算Bézier数据以进行缓动。 然后我得到我发送到着色器效果的Time属性的计算值 但是我不能在这个转换中使用beginAnimation,因为播放动画的类是非UI的,并且已经从一个抽象类继承。

如果我想使用beginAnimation,我必须使依赖对象继承的抽象类使用依赖属性作为BeginAnimation的参数但是我得到了这个错误

this.BeginAnimation(TimeProperty,anim);


'MyClass'不包含BeginAnimation的定义,也没有扩展方法可以找到接受类型为'MyClass'的frist参数的BeginAnimation(你是否缺少using指令或汇编引用)

所有这些依赖/动画系统都不符合我的需求,因为我没有直接使用ui而且我现在完全被卡住了

有什么想法吗?

(我使用了dispatcherTimer来做这个技巧,但是当动画结束时,我可以在半秒钟内看到我的应用程序的背景颜色,然后我的第二个图像终于显示但我不想要这种行为,因为它会被推销......)

2 个答案:

答案 0 :(得分:0)

使用KeyFrame动画。您可以向其添加单个帧。例如,您可以隐藏每个第二个关键帧的内容。

答案 1 :(得分:0)

我最后使用Storyboard来实现这一点,在我的抽象类上使用Dependency对象继承。

即使在非UI对象上使用Sotryboard / dependencyProperty系统并不好(在我看来),它仍然有用。

我有一个故事板,可以在MyClass中将名为Time的DependencyProperty从0设置为1。 在TimeChangedCallback中,我根据自定义样条线缓动函数计算新的时间值,然后将其影响到我的着色器的Progress属性。

无论如何,感谢您的关注。