故事板与Media.Animations

时间:2014-07-03 10:40:31

标签: c# wpf vb.net performance animation

假设你想要动画一些东西,哪一个更适合表现?

在XAML中使用Storyboards

OR

在代码隐藏中的DoubleAnimation中的Media.Animation等类

2 个答案:

答案 0 :(得分:0)

第一件事是StoryBoard不是动画。如果您按照以下示例:

<Storyboard x:Name="myStoryboard">
  <DoubleAnimation
    Storyboard.TargetName="MyAnimatedRectangle"
    Storyboard.TargetProperty="Opacity"
    From="1.0" To="0.0" Duration="0:0:1" 
    AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>

此处创建动画并使用StoryBoard

将其应用于矩形的不透明度属性

更多信息是here

答案 1 :(得分:0)

如前所述,故事板不是动画,因此您无法对它们进行比较。

我必须假设你的问题是关于在XAML后面的代码中创建DoubleAnimation:

<Storyboard>
 <DoubleAnimation />
</Storyboard>

因此,您的问题非常类似于:如果我在XAML或后面的C#代码中创建对象,是否存在性能差异。

我的答案是......起初你应该真的不在乎。引用某个肯特贝克:让它有效,让它干净,快速。在WPF中,为了使其干净,您应该实现MVVM以明确区分关注点。动画显然是一个UI问题,所以应该在视图中进行设计:你的xaml文件。

现在,如果我尝试回答您的问题,几乎没有性能差异,因为在任何情况下最终都会创建DoubleAnimation对象。

在XAML中这样做,它对你的软件架构会更好。

让我总结一下:如果你真的对你的应用程序有性能限制,那么WPF可能是一个糟糕的选择,因为它的效率并不高。 WPF的真正力量是允许这种明确的关注分离。