【发布时间】:2011-01-30 00:11:42
【问题描述】:
我想在标签上制作一系列动画,例如,首先制作从值 0 到 1 的不透明动画,反之亦然,并且在不透明动画结束时而不是在前景动画之前。我想在 XAML 代码中执行此操作,然后从 C# 代码开始和完成动画。哪种方法最好、最有效?
欢迎所有回复!
提前致谢。
【问题讨论】:
标签: wpf xaml animation storyboard
我想在标签上制作一系列动画,例如,首先制作从值 0 到 1 的不透明动画,反之亦然,并且在不透明动画结束时而不是在前景动画之前。我想在 XAML 代码中执行此操作,然后从 C# 代码开始和完成动画。哪种方法最好、最有效?
欢迎所有回复!
提前致谢。
【问题讨论】:
标签: wpf xaml animation storyboard
最简单的方法是使用合适的BeginTime 和Duration 属性在单个故事板中定义整个动画。这样,整个动画可以作为一个单元启动和停止,但您可以有不同的序列。
例如:
<Storyboard Duration="0:00:06">
<DoubleAnimation Duration="0:0:4" Storyboard.TargetName="gear1RotateTransform" Storyboard.TargetProperty="Angle" From="-600" To="0"/>
<DoubleAnimation Duration="0:0:4" Storyboard.TargetName="gear2RotateTransform" Storyboard.TargetProperty="Angle" From="600" To="0"/>
<DoubleAnimation Duration="0:0:4" Storyboard.TargetName="gear3RotateTransform" Storyboard.TargetProperty="Angle" From="-600" To="0"/>
<DoubleAnimation BeginTime="0:0:1" Duration="0:00:02" Storyboard.TargetName="firstLetter" Storyboard.TargetProperty="Opacity" From="0.0" To="1.0"/>
<DoubleAnimation BeginTime="0:0:2" Duration="0:00:02" Storyboard.TargetName="secondLetter" Storyboard.TargetProperty="Opacity" From="0.0" To="1.0"/>
<DoubleAnimation BeginTime="0:0:3" Duration="0:00:02" Storyboard.TargetName="thirdLetter" Storyboard.TargetProperty="Opacity" From="0.0" To="1.0"/>
<DoubleAnimation BeginTime="0:0:4" Duration="0:00:02" Storyboard.TargetName="siteLink" Storyboard.TargetProperty="Opacity" From="0.0" To="1.0"/>
<DoubleAnimation BeginTime="0:0:4" Duration="0:00:02" Storyboard.TargetName="siteLinkTop" Storyboard.TargetProperty="Opacity" From="0.0" To="1.0"/>
</Storyboard>
此情节提要在前 4 秒内更改了 3 个旋转变换的值,但 firstLetter 项目上的不透明度直到一秒后才开始更改,并且仅运行 2 秒。 siteLink 和 siteLinkTop 元素的不透明度直到 4 秒后才改变(齿轮旋转动画完成)。
【讨论】: