多个元素的相同Storyboard动画

时间:2016-03-28 05:00:32

标签: c# wpf animation storyboard

我最近开始学习C#wpf。我想知道我们可以为多个目标使用相同的故事板。我知道这可以通过XAML实现,但我不知道如何通过c#代码实现它。我正在做的事情就像故事板开始动画然后0-2秒一个元素完成动画然后从2-4秒持续时间另一个元素做动画。通过这种方式,故事板的总持续时间为4秒。 下面是我在网上找到的XAML代码,我想在c#code

中做这样的事情
<Storyboard x:Name=”sbFlip“> 
    <DoubleAnimationUsingKeyFrames BeginTime=”00:00:00” Storyboard.TargetName=”front”  Storyboard.TargetProperty=”(UIElement.RenderTransform).(ScaleTransform.ScaleX)“> 
        <SplineDoubleKeyFrame KeyTime=”00:00:00.2” Value=”0“/> 
    </DoubleAnimationUsingKeyFrames> 
    <DoubleAnimationUsingKeyFrames BeginTime=”00:00:00.2” Storyboard.TargetName=”back” Storyboard.TargetProperty=”(UIElement.RenderTransform).(ScaleTransform.ScaleX)“> 
        <SplineDoubleKeyFrame KeyTime=”00:00:00.4” Value=”1“/> 
    </DoubleAnimationUsingKeyFrames> 
</Storyboard> 

1 个答案:

答案 0 :(得分:0)

让这些是视图中的三个对象:

  <Rectangle x:Name="rctMovingObject1" Fill="LimeGreen" Width="50" Height="50"/>
  <Rectangle x:Name="rctMovingObject2" Fill="Red" Width="50" Height="50" Canvas.Top="136"/>
  <Rectangle x:Name="rctMovingObject3" Fill="Purple" Width="50" Height="50" Canvas.Top="69"/>

您可以从后端定义动画,并按如下方式分配给所有动画:

var anim = new DoubleAnimation
  {
     From = 1920,
     To = 1,
     Duration =new Duration(new TimeSpan(0,0,2))// a duration of 2 seconds 
  };
rctMovingObject1.BeginAnimation(Canvas.LeftProperty, anim);
rctMovingObject2.BeginAnimation(Canvas.LeftProperty, anim);
rctMovingObject3.BeginAnimation(Canvas.LeftProperty, anim);

Read More...