2012-08-13 27 views
0

我试图在图像上使用shadereffect实现自定义过渡动画。 我正在使用一个系统来指定缓动Bézier函数graphicaly,并且我在一个名为Spline的类中处理所有样条数据。在我的wpf过渡动画中闪烁

我将时间属性动画发送到样条曲线的静态方法,以计算缓和的贝塞尔曲线数据。 然后我得到我发送到我的着色器效果的时间属性 的计算值,但我不能在此转换上使用beginAnimation,因为播放动画的类是非UI的,并且已经从抽象类继承。

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

this.BeginAnimation(TimeProperty,阿尼姆);


“MyClass的”不包含用于BeginAnimation的定义,并没有扩展方法BeginAnimation接受类型为“MyClass的”一个弗里斯特参数可以找到(是否缺少using指令或程序集引用)

所有这些依赖/动画系统不符合我的需求,因为我不直接在UI上工作,我现在完全卡住了

任何想法?我使用了一个dispatcherTimer来完成这个技巧,但是当动画完成时,我可以在半秒内看到我的应用程序的背景颜色,然后我的第二个图像终于出现了,但是我不想要这样的行为,因为它将被销售...)

回答

0

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

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

我有一个故事板到从0指定时间MyClass中的DependencyProperty动画为1 在时间上的PropertyChangedCallback,我计算依赖于我的自定义样我的新时间值缓和功能,然后影响到物业的进展我的着色器。无论如何,感谢您的关注。

0

使用KeyFrame动画。您可以添加单帧。作为例子,你可以隐藏每个第二关键帧。

+0

我使用工具中的bézier曲线创建了自定义缓动功能,我在这里设计了我想要的所有缓动功能,并避免用户打扰数学。 但在我的应用程序中,我无法使用关键帧,因为我使用自定义类型的样条缓动函数,并且wpf的样条关键帧系统意味着第一个点指向0,0,最后一个指向1,1 – Julien 2012-08-13 13:39:58

+0

,甚至与第二个动画使用离散动画关键帧动画化第二个图像的不透明度以覆盖第一个图像,我仍然在动画停止后弹出图像 – Julien 2012-08-13 13:43:30