WPF动画UserControl - 画布

时间:2014-03-20 15:49:03

标签: wpf canvas user-controls

在开发我的项目时,我正在尝试创建一个包含许多画布层的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元素闪烁/闪烁并且工作非常不稳定。

请帮助我理解并学习更好的方法来做正确的事。

0 个答案:

没有答案