WPF 动画(一)

WPF 属性动画系统

若要使属性具有动画功能,属性必须满足以下三个要求:

  • 它必须是依赖属性。

  • 它必须属于继承的类DependencyObject并实现IAnimatable接口。

  • 必须存在可用的兼容动画类型。

创建步骤:(1)根据想改动的属性类型=》动画类型。如修改透明度 Opacity属性属于类型Double=》DoubleAnimation;

                  (2)Duration动画的指定从其起始值转到其目标值所需的时间长度。Duration="0:0:5"

                  (3)AutoReverse="True" RepeatBehavior="Forever"  属性

<Storyboard>
    <DoubleAnimation
        Storyboard.TargetName="MyRectangle" 
        Storyboard.TargetProperty="Opacity"
        From="1.0" To="0.0" Duration="0:0:5" 
        AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>

创建启动动画对象和触发机制

<EventTrigger RoutedEvent="Rectangle.Loaded">
  <BeginStoryboard>
    <Storyboard>
      <DoubleAnimation
        Storyboard.TargetName="MyRectangle" 
        Storyboard.TargetProperty="Opacity"
        From="1.0" To="0.0" Duration="0:0:5" 
        AutoReverse="True" RepeatBehavior="Forever" />
    </Storyboard>
  </BeginStoryboard>
</EventTrigger>

在某个控件中实现

<Rectangle
  Name="MyRectangle"
  Width="100" 
  Height="100"
  Fill="Blue">
  <Rectangle.Triggers>
    <!-- Animates the rectangle's opacity. -->
    <EventTrigger RoutedEvent="Rectangle.Loaded">
      <BeginStoryboard>
        <Storyboard>
          <DoubleAnimation
            Storyboard.TargetName="MyRectangle" 
            Storyboard.TargetProperty="Opacity"
            From="1.0" To="0.0" Duration="0:0:5" 
            AutoReverse="True" RepeatBehavior="Forever" />
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
  </Rectangle.Triggers>
</Rectangle>

最后一个步骤:后台注册load  事件

应用和启动的最简单办法Storyboard在代码中是使用事件处理程序。 本部分演示如何将相关联Storyboard与代码中的事件处理程序。
注册Loaded矩形的事件。
myRectangle.Loaded += new RoutedEventHandler(myRectangleLoaded);
声明事件处理程序。 在事件处理程序,使用Begin方法来应用演示图板。
private void myRectangleLoaded(object sender, RoutedEventArgs e)
{
    myStoryboard.Begin(this);
}

动画类型

由于动画生成属性值,因此不同的属性类型具有不同的动画类型。 若要对采用的属性进行动画处理Double,如Width属性的元素,使用生成的动画,Double值。 若要对采用的属性进行动画处理Point,使用生成的动画,Point值,等等。 由于存在许多不同的属性类型,有一些动画类中的System.Windows.Media.Animation命名空间。 它们都遵循严格的命名约定,因此可以轻松地区分它们:

  • <类型> 动画

    这些动画称为“From/To/By”或“基本”动画,它们在起始值和目标值之间进行动画处理,或者通过将偏移量值与其起始值相加来进行动画处理

  • <类型> AnimationUsingKeyFrames

    关键帧动画的功能比“From/To/By”动画的功能更强大,因为可以指定任意多个目标值,甚至可以控制它们的插值方法。 某些类型只能用关键帧动画进行动画处理。

  • <类型> AnimationUsingPath

    路径动画支持使用几何路径来生成动画值。

  • <类型> AnimationBase

    抽象类在实现时进行动画处理<类型> 值。 此类用作类的基类<类型> 动画并<类型> AnimationUsingKeyFrames 类。 只有在想要创建自己的自定义动画时,才需要直接处理这些类。 否则,请使用<类型> 动画或关键帧<类型> 动画。

在大多数情况下,你将想要使用<类型> 动画类,如DoubleAnimationColorAnimation

下表显示了一些常用动画类型以及一些与这些类型一起使用的属性。

属性类型对应的基本 (From/To/By) 动画对应的关键帧动画对应的路径动画用法示例
ColorColorAnimationColorAnimationUsingKeyFrames进行动画处理ColorSolidColorBrushGradientStop
DoubleDoubleAnimationDoubleAnimationUsingKeyFramesDoubleAnimationUsingPath进行动画处理WidthDockPanelHeightButton
PointPointAnimationPointAnimationUsingKeyFramesPointAnimationUsingPath进行动画处理Center位置EllipseGeometry
StringStringAnimationUsingKeyFrames进行动画处理TextTextBlockContentButton

动画是时间线

所有动画类型均都继承自Timeline类; 因此,所有动画都是专用的类型的时间线。 

这三个常用的计时属性Duration, AutoReverse,和RepeatBehavior

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值