WPF —— 关键帧动画

wpf动画类型
1<类型>Animation这些动画称为from/to/by动画或者叫基本动画,他们会在起始值或者结束值进行动画处理,常用的例如
<DoubleAnimation>

2 <类型>AnimationUsingKeyFrames: 关键帧动画,功能要比from/to这些动画功能要强大,可以在任意地一个帧添加对应得动画效果甚至可以设置动画过程当中的
运行的速率:eg:doubleAnimationUsingKeyFrames

3 <类型>AnimationUsingPath 路径动画,主要支持使用几何图形来生成路径动画值

4 <类型>AnimationBase 动画基类,是from/to和关键帧动画的基类,实现自定义动画可以实现该类

关键帧动画: 
 doubleAnimationusingkeyframes // double类型的关键帧动画
 ObjectAnimationusingkeyframes // Object类型的关键帧动画
 ColorAnimationusingkeyframes // 颜色类型的关键帧动画
 StringAnimationusingkeyframes // 字符串类型的关键帧动画

动画的几要素: 
1 做动画的标签 RectAnle
2 触发做动画的条件,触发器
3 添加Storyboard
4 添加动画类型 <DoubleAnimationUsingKeyFrames>
5 动画类型标签添加 : 动画元素和动画属性 两个属性
                    Storyboard.TargetName 确定动画元素
                     Storyboard.TargetProperty 做动画的属性

动画常用的属性:
                            AutoReverse="True" 动画是否支持相反方向的动画
                            RepeatBehavior="Forever" 重复的行为 : forever永远
                            Storyboard.TargetName 确定动画元素
                             Storyboard.TargetProperty 做动画的属性

颜色关键帧动画

<Button Width="200" Height="200" Name="btn">
    <Button.Triggers>
        <EventTrigger RoutedEvent="Button.Click">
            <BeginStoryboard>
                <Storyboard>
                    <ColorAnimationUsingKeyFrames AutoReverse="true"
                                                  RepeatBehavior="Forever"
                                                  Storyboard.TargetName="btn"
                                                  Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"
                                                  >
                        <LinearColorKeyFrame KeyTime="0" Value="Red"></LinearColorKeyFrame>
                        <LinearColorKeyFrame KeyTime="0:0:0.1" Value="Blue"></LinearColorKeyFrame>
                        <LinearColorKeyFrame KeyTime="0:0:0.2"
                                             Value="Green"></LinearColorKeyFrame>
                        <LinearColorKeyFrame KeyTime="0:0:0.3"
                                             Value="Yellow"></LinearColorKeyFrame>
                    </ColorAnimationUsingKeyFrames>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Button.Triggers>
</Button>

字符串关键帧动画

<Button Width="100" Height="100" Margin="0,300,0,0" Name="btn1">
    <Button.Triggers>
        <EventTrigger RoutedEvent="Button.KeyDown">
            <BeginStoryboard>
                <Storyboard>
                    <!--HoldEnd 保留动画最后一帧的效果,如果值是stop,动画最终效果是恢复到原样-->
                    <StringAnimationUsingKeyFrames  FillBehavior="HoldEnd"
                                                    Storyboard.TargetName="btn1"
                                                    Storyboard.TargetProperty="(Button.Content)">
                        <!--离散型关键帧-->
                        <DiscreteStringKeyFrame KeyTime="0" Value="5s"></DiscreteStringKeyFrame>
                        <DiscreteStringKeyFrame KeyTime="0:0:1"
                                                Value="4s"></DiscreteStringKeyFrame>
                        <DiscreteStringKeyFrame KeyTime="0:0:2"
                                                Value="3s"></DiscreteStringKeyFrame>
                        <DiscreteStringKeyFrame KeyTime="0:0:3"
                                                Value="2s"></DiscreteStringKeyFrame>
                        <DiscreteStringKeyFrame KeyTime="0:0:4"
                                                Value="1s"></DiscreteStringKeyFrame>
                        <DiscreteStringKeyFrame KeyTime="0:0:5"
                                                Value="0s"></DiscreteStringKeyFrame>

                    </StringAnimationUsingKeyFrames>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Button.Triggers>
</Button>

对象类型的关键帧

<Button Width="100" Height="100" Margin="0,-300,0,0" Name="btn2">
    <Button.Triggers>
        <EventTrigger RoutedEvent="Button.MouseLeave">
            <BeginStoryboard>
                <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="btn2" 
                                                   Storyboard.TargetProperty="(UIElement.Visibility)"
                                                   AutoReverse="True"
                                                   RepeatBehavior="Forever">
                        <DiscreteObjectKeyFrame KeyTime="0:0:0.1" Value="{x:Static Visibility.Hidden}"></DiscreteObjectKeyFrame>
                        <DiscreteObjectKeyFrame KeyTime="0:0:0.3"
                                                Value="{x:Static Visibility.Visible}"></DiscreteObjectKeyFrame>
                    </ObjectAnimationUsingKeyFrames>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Button.Triggers>
</Button>

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值