Silverlight 优化画布动画

Silverlight 优化画布动画,silverlight,xaml,animation,Silverlight,Xaml,Animation,在我的XAML UI中,我有4个画布面板。 一次只能看到一个,其他的则被折叠。 我使用transform在显示画布时具有水平滑动效果 我有两种选择: 备选案文1: 当我想转到画布时,我会将所有其他3个画布移出屏幕,因为我不知道哪一个当前处于活动状态。这样做的好处是我只有4个动画,每个画布一个 备选案文2: 我定义了从另一个特定画布转到特定画布的新动画。在这种情况下,我不需要移动所有三张画布,只需移动一张。但是我需要创建12个动画,每个画布3个 我认为选项1是内存有效的,因为只有4个动画实例,但存

在我的XAML UI中,我有4个画布面板。 一次只能看到一个,其他的则被折叠。 我使用transform在显示画布时具有水平滑动效果

我有两种选择:

备选案文1:

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

备选案文2:

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

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

选项2的CPU效率很高,但由于有12个动画实例,会导致内存开销

我应该选择哪一个

谢谢,
Tushar

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


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

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