TimeLine类

开发工具与关键技术:Visual Studio 2017
撰写时间: 2019年7月17日
下面是一个TimeLine类的属性,首先来看TimeLine类的常用属性表:

名称说明
BeginTime设置将添加到动画开始之前的延时时间(TimeSpan类型),这一延时总被加载到总时间,具有5秒延时的5秒动画,总时间是10秒
Duration动画开始到结束的运行时间
SpeedRatio提高或减慢动画速度,SpeedRatio属性值是1,如果增加该属性值为5,动画的速度就会变成原来的5倍
AcclerationRatio DecelerationRatio使动画不是线性的,从而开始是较慢,或者开始时较快,这两个属性的值在0~1之间,这两个属性值之和不能超过1
AutoReverse如果为True,当动画完成时会自动反向播放,返回到原始值
FillBehavior决定当动画结束时,如何操作
RepeatBehavior通过该属性,可以使用指定的次数或时间间隔重复动画,用于设置这个属性的RepeatBehavior对象决定了确切的行为
可以通过AccelerationRatio和DecelerationRation属性压缩部分时间轴,使动画运行的更快,并将拉伸其他时间进行补偿,使总时间保持不变。这两个属性都表示百分比值,例如:将AcceleRation属性设置为0.3,表示希望使用动画持续时间中前30%的时间进行加速。例如在1个10秒的动画中,前3秒会加速运行,而剩余的7秒会以恒定不变的速度运行,如果将DeceleRation属性设置为0.3那么最后3秒回减速运行;见代码图:
//实例化一个DoubleAnimation类
            DoubleAnimation doubleAnimatione = new DoubleAnimation();
            //设置From属性
            doubleAnimatione.From = btn1.Width;
            //前5秒加速运行
            doubleAnimatione.AccelerationRatio = 0.5;
            //后2秒减速运行
            doubleAnimatione.DecelerationRatio = 0.2;
            //设置To属性
            doubleAnimatione.To = 1000;
            //设置Duration属性
            doubleAnimatione.Duration = new Duration(TimeSpan.FromSeconds(10));
            //为元素设置BenginAnimation方法
            btn1.BeginAnimation(Button.WidthProperty, doubleAnimatione);

使用RepeataBehavior属性可以控制如何重复运行动画,如果希望重复固定次数,应为RepeatBehavior构造函数传递合适的次数,还可设置RepeatBehavior为永久重要;见代码图:

//设置重复次数为3次
doubleAnimatione.RepeatBehavior = new RepeatBehavior(3);
//设置永久重复动画
 doubleAnimatione.RepeatBehavior = RepeatBehavior.Forever;

WPF动画通过一组动画类表示,使用少数几个属性设置相关信息,如开始值、结束值以及持续时间,这显然使他们非常适合于XAML,不是很清晰的是,如何为特定的事件和属性关联动画,以及如何在正确的时间触发动画;故事板是BeginAnimation()方法的XAML等价物,通过故事板将动画指定到合适的元素和属性。事件触发器:事件触发器响应属性变化或事件(如按钮的Click事件),并控制故事板。增强的时间线,可用来分组多个动画,而且具有控制动画播放的能力一暂停、停止以及播放位置。然而StoryBoard类提供的最基本功能是,能够使用TargetProperty和TargetName属性指向某个特定属性和特定元素,换句话说,故事板在动画和希望应用动画的属性之间架起了一座桥梁。其中TargetProperty属性和TargetName属性都是附加:

<!--由于Storyboard.TargetProperty属性是附加属性,创建一个故事板-->
    <Storyboard Storyboard.TargetProperty="width">
        <!--创建一个DoubleAnimation类-->
        <DoubleAnimation To="350" RepeatBehavior="Forever" Duration="0:0:3"></DoubleAnimation>
    </Storyboard>

可以在4个位置定义事件触发器:
1).在样式中(style.Triggers集合)
2).在数据模板中(DataTemplate.Triggers集合)
3).在控件模板中(ControlTemplate.Triggers集合)
4).直接在元素中定义事件触发器(FrameworkElement.Triggers集合)
当创建事件触发器时,需要指定开始触发器的路由事件和触发器执行的一个或多个动作,对于动画,最常见的动作是BeginStoryBoard,该动作相当于调用BeginAnimation()方法;所有事件触发器都可以启动动作,所有动作都由继承自System.Windows.TriggerAction的类表示。见代码图:

<Button Width="200" Height="80" Content="事件触发器" FontSize="20">
        <!--元素触发器-->
        <Button.Triggers>
            <!--定义事件触发器-->
            <EventTrigger RoutedEvent="Button.Click">
                <!--执行一个动作-->
                <EventTrigger.Actions>
                    <!--开始故事板-->
                    <BeginStoryboard>
                        <!--创建一个故事板-->
                        <Storyboard>
                            <!--创建一个故事板-->
                            <Storyboard>
                                <!--创建一个DoubleAnimation类-->
                                <DoubleAnimation Storyboard.TargetProperty="width" To="350" RepeatBehavior="Forever" Duration="0:0:3"></DoubleAnimation>
                            </Storyboard>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
        </Button.Triggers>
    </Button>

效果图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值