我最近开始学习C# wpf。我想知道我们是否可以对多个目标使用相同的故事板。我知道这可以通过XAML实现,但我不知道如何通过c#代码来实现。我正在做一些事情,比如当故事板开始动画时,在0-2秒内,一个元素完成动画,然后在2-4秒的持续时间内,另一个元素完成动画。这样,故事板的总时长为4秒。下面是我在web上找到的XAML代码,我想用c#代码做一些类似的事情
<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>
发布于 2016-03-28 13:07:34
假设以下是视图中的三个对象:
<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);
https://stackoverflow.com/questions/36256245
复制相似问题