优化画布动画

时间:2011-05-26 14:42:57

标签: silverlight xaml animation

在我的XAML UI中,我有4个画布面板。 在一次只有一个是可见的而其他的是崩溃的。 我在显示画布时使用变换来获得水平滑动效果。

我有两种方法可以做到这一点:

选项1:

当我想转到画布时,我会将所有其他3幅画布移出屏幕,因为我不知道哪一个当前是活动的。这样做的好处是我只有4个动画,每个画布一个。

选项2:

我定义了从另一个特定画布转到特定画布的新动画。在这种情况下,我不需要移动所有三个画布,只需要移动一个。但是我需要创建12个动画,每个画布3个。

我认为选项1是内存高效的,因为只有4个动画实例,但存在CPU性能开销。

选项2具有CPU效率,但由于12个动画实例而导致内存开销。

我更喜欢哪个选项?

谢谢, 图莎尔

2 个答案:

答案 0 :(得分:3)

出于兴趣,您是否考虑过使用VisualStateManager?通过样式定义'OnScreen'和'OffScreen'VisualState并将其应用于每个画布,您只需要编码一次,让VisualStateManager调用适当的动画。通过使用VisualStateManager.GoToState(),这意味着您不需要12个动画实例,并且您不需要在每次状态更改时调用4个动画。两全其美? 如果您需要更多信息,我可以尽快提供一些示例代码。

答案 1 :(得分:1)

看起来你已经仔细考虑了每种方法的含义。不幸的是,只有你能回答你提出的问题。如果你的应用程序关注内存,那么你应该使用选项1.但是如果你的应用程序对CPU有限,那么你应该使用选项2.

我知道这在很大程度上是一个非答案......但是因为它始终与性能有关,所以你应该对这两种方法进行一些分析和测试。您可能会发现这两种方法的相对优点或缺点可以忽略不计,在这种情况下,您应该选择更易于维护且更易于编码的任何选项(可能是选项1): - )