0

我正在尝试在图像上使用着色器效果来实现自定义过渡动画。我正在使用我制作的用于以图形方式指定缓动贝塞尔函数的系统,并且我在一个名为 Spline 的类中处理所有样条数据。

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

如果我想使用 beginAnimation,我必须让抽象类继承自 dependencyObject 以使用依赖属性作为 BeginAnimation 的参数,但我收到此错误

this.BeginAnimation(TimeProperty, 动画);


“MyClass”不包含 BeginAnimation 的定义,并且找不到接受“MyClass”类型的第一个参数的扩展方法 BeginAnimation(您是否缺少 using 指令或程序集引用)

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

任何想法?

(我使用了一个 dispatcherTimer 来解决这个问题,但是当动画完成时,我可以在半秒内看到我的应用程序的背景颜色,然后我的第二张图片终于出现了,但我不想要这种行为,因为它会被推销。 ..)

4

2 回答 2

0

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

于 2012-08-13T13:08:03.357 回答
0

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

即使在非 UI 对象上使用 Sotryboard/dependencyProperty 系统不是很好(在我看来),它也可以工作。

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

无论如何感谢您的关注。

于 2012-08-14T13:25:50.883 回答