MSDN 教学短片 WPF 14(2D动画之—Trigger)

2D动画之—Trigger

我们知道Trigger是一个触发器,它按条件应用属性值或执行操作。

要注意的是:若要使触发器有意义,必须在 Trigger 上同时指定 Property 和 Value 属性。如果这两个属性或其中一个未设置,则会引发异常。

此外,还有其他类型的触发器。MultiTrigger 用于根据多个属性的状态应用更改。EventTrigger 用于指定在发生事件时应用更改。DataTrigger 和 MultiTrigger 用于数据绑定属性。

下面通过实例来了解强大的Trigger

首先我们画个矩形在面板上,并对它设置一个RotateTransform,我们后面要对这个RotateTransform,实现动画。

<Rectangle Width="60" Height="60" Fill="BlueViolet">
            <Rectangle.RenderTransform>
                <RotateTransform x:Name="rotate1" Angle="0" CenterX="30" CenterY="30" />
            </Rectangle.RenderTransform>
        </Rectangle>


再放四个按钮,实现开始旋转矩形,暂停,继续,停止。

<Button Content="Start" Margin="88,234,365,51" Name="btnStart" />
    <Button Content="Pause" Margin="162,234,291,51" Name="tnPause" />
    <Button Content="Resume" Margin="233,234,220,51" Name="btnResume"/>
    <Button Content="Stop" Margin="320,234,133,51" Name="btnStop" />

下面来设置这四个按钮的Trigger,分别实现相应的功能。

<Grid.Triggers>
            <EventTrigger SourceName="btnStart" RoutedEvent="Button.Click">
                <EventTrigger.Actions>
                <BeginStoryboard x:Name="bs">
                    <Storyboard RepeatBehavior="Forever">
                        <DoubleAnimation Storyboard.TargetName="rotate1" 
                                         Storyboard.TargetProperty="Angle"
                                         From="0" To="360" Duration="0:0:5"/>
                    </Storyboard>
                </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
            <EventTrigger SourceName="btnPause" RoutedEvent="Button.Click">
                <EventTrigger.Actions>
                    <PauseStoryboard  BeginStoryboardName="bs"/>
                </EventTrigger.Actions>
            </EventTrigger>
            <EventTrigger SourceName="btnResume" RoutedEvent="Button.Click">
                <EventTrigger.Actions>
                    <ResumeStoryboard BeginStoryboardName="bs"/>
                </EventTrigger.Actions>
            </EventTrigger>
            <EventTrigger SourceName="btnStop" RoutedEvent="Button.Click">
                <EventTrigger.Actions>
                    <StopStoryboard BeginStoryboardName="bs"/>
                </EventTrigger.Actions>
            </EventTrigger>
        </Grid.Triggers>
这里用到了BeginStoryboard 它的含义是:

一个触发器操作,该操作可启动 Storyboard 并将其动画分发给动画的目标对象和属性。

这里的DoubleAnimation 是:

在指定的 Duration 内使用线性内插对两个目标值之间的 Double 属性值进行动画处理。

PauseStoryboard ,ResumeStoryboard ,StopStoryboard 分别表示暂停,继续,停止操作。

运行效果:

image


 

转载于:https://www.cnblogs.com/dingli/archive/2011/01/04/1925137.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值