WPF 动画的制作

WPF比winform功能强大得多,今天我学习了WPF动画的制作,现在公众号记笔记,以备后查,共勉。

动画不仅可以使引起注意的用户界面更加引人注目,还可以使其更加便于使用,只需对背景色进行动画处理或应用经过动画处理的Transform,即可创造出生动的屏幕过渡效果或提供有帮助的视觉提示。.

WPF可以对对象的个别属性应用动画,可以对对象进行动画处理。如:若要使框架元素增大,请对其Width和Heigh属性进行动画处理。若要使对象逐渐从视野中消失,可以对其Opacity属性进行动画处理。

由于Opacity属性的类型是Double,因此需要一个产生双精度值的动画。DoubleAnimation是这样一个动画。

1:若要指定其起始值,可设置From属性。

2:若要指定其终止值,可设置其To属性。

3:必须设置Duration值,该值为从其始值至终止值所需要的时间。Duration="0:1:5" 为需要1分钟5秒

4:若要使元素在消失后再逐渐回到视野中,请将动画的 AutoReverse 属性设置为 true

5:若要使动画无限期重复,请将其 RepeatBehavior 属性设置为 Forever。默认情况下,时间线的迭代次数为 1.0,即播放一次时间线,根本不进行重复。

不透明度值1.0使对象完全不透明,0.00使对象完全不可见,

下面先见代码:

<Label Name="abc" Content="测试动画,5秒消失"  FontSize="60">
                <Label.Triggers>       
                    <EventTrigger RoutedEvent="Rectangle.Loaded"> 
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation  Storyboard.TargetName="abc"  
                                                  Storyboard.TargetProperty="Opacity"
                                                  From="1" To="0" Duration="0:0:5" 
                                                  AutoReverse="True" RepeatBehavior=" Forever " />
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                </Label.Triggers>
            </Label>

一、若要向对象应用动画,请创建 Storyboard 并使用 TargetName 和 TargetProperty 附加属性指定要进行动画处理的对象和属性

二、在 XAML 中应用和启动 Storyboard 的最简单方法是使用事件触发器。创建一个 BeginStoryboard 对象并将情节提要与其关联。 BeginStoryboard 是应用并启动 Storyboard 的一种 TriggerAction 类型。创建 EventTrigger 并将 BeginStoryboard 添加到其 Actions 集合中。将 EventTrigger 的 RoutedEvent 属性设置为要启动 Storyboard 的路由事件。(以上代码是用loaded事件)

不同的属性类型具有不同的动画类型,如果采用Width属性也是可以让对象移动的。代码如下:

<Canvas Name="cba">
            <Canvas.Triggers>
                <EventTrigger RoutedEvent="Rectangle.Loaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation  Storyboard.TargetName="cba"  
                                                  Storyboard.TargetProperty="Width"
                                                  From="0" To="1000" Duration="0:0:0.5" 
                                                  AutoReverse="False" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Canvas.Triggers>

WPF的动画命名空间存在System.Windows.Media.Animation 下面.它们都遵循严格的命名约定,因此可以轻松地区分它们:

  • < 类型>Animation

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

    此概述中的示例使用这些动画,因为这些动画使用起来最简单。From/To/By 动画概述中详细描述了“From/To/By”动画。

    • 若要指定起始值,请设置动画的“From”属性。

    • 若要指定终止值,请设置动画的“To”属性。

    • 若要指定偏移量值,请设置动画的“By”属性。

  • < 类型>AnimationUsingKeyFrames

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

  • < 类型>AnimationUsingPath

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

  • < 类型>AnimationBase

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

在大多数情况下,将要使用 <类型>Animation 类, 如 DoubleAnimation 和 ColorAnimation。

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

WPF 动画的制作

WPF很强大,活到老,学到老。