XAML C#WPF执行有序动画序列的最有效方法

ton*_*oni 8 wpf animation xaml storyboard

我想在标签上做一系列动画,例如,首先从值0到1执行不透明度动画,反之亦然,只是在不透明度动画结束时,而不是在前景动画之前.我想在XAML代码中执行它,然后从C#代码开始和完成de动画.这是最好和最有效的方法吗?

欢迎所有回复!

提前致谢.

Ben*_*orf 15

最简单的方法是在具有适合的单一故事板来定义整个动画BeginTimeDuration性质.这样,整个动画可以作为一个单元启动和停止,但您可以有不同的序列.

例如:

<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>
Run Code Online (Sandbox Code Playgroud)

此故事板会在前4秒内更改3个旋转变换的值,但firstLetter项目的不透明度在经过一秒后才开始更改,并且仅运行2秒.直到4秒后(和齿轮旋转动画完成),siteLinksiteLinkTop元素的不透明度才会改变.