在开发我的项目时,我正在尝试创建一个包含许多画布层的usercontrol元素。它是使用Blend导入的矢量图像。我为初始帧创建了一个.GIF模型,并为每一层(40ms)设置了帧速率。在创建.gif时,可以轻松控制每层的帧速度。我现在正尝试使用 Storyboard 在WPF中制作该动作,并使用可见性状态来控制每个图层的外观,就像我的源代码一样:
<UserControl.Resources>
<Storyboard x:Key="ProgressAnimation" RepeatBehavior="Forever">
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00.0000000" Storyboard.TargetName="Layer1" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="00:00:00.2000000" Value="{x:Static Visibility.Visible}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.4500000" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00.1000000" Storyboard.TargetName="Layer2" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="00:00:00.2000000" Value="{x:Static Visibility.Visible}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.4500000" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00.2290000" Storyboard.TargetName="Layer3" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="00:00:00.2000000" Value="{x:Static Visibility.Visible}"/>
<DiscreteObjectKeyFrame KeyTime="00:00:00.4500000" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</UserControl.Resources>
当然我设置了一个触发器:
<UserControl.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard x:Name="ProgressAnimationBeginStoryboard" Storyboard="{StaticResource ProgressAnimation}"/>
</EventTrigger>
</UserControl.Triggers>
现在代码完美无缺,但我确实提高了元素的速度,并且遇到了麻烦。我为我的StoryBoard设置SpeedRation元素闪烁/闪烁并且工作非常不稳定。
请帮助我理解并学习更好的方法来做正确的事。