ibcadmin 发表于 2013-9-10 10:37:05

DoubleAnimation简单教程-WPF

DoubleAnimation实现了动画效果,比如会飘的云(无缝隙)等

DoubleAnimation 可以用C#写,也可以用XAML写

DoubleAnimation指定一个Double类型的属性,使其在指定的时间内由起点值到达终点值,从而形成动画效果.
应用它来实现动画效果,只要简单地指定几个参数值就可以了.
看下面的代码是改变一个按钮的大小的动画

//指定长度变化的起点,终点与持续时间
             DoubleAnimation widthAnimation =
                new DoubleAnimation(200, 400, new Duration(TimeSpan.FromSeconds(0.8)));

            //指定高度变化的起点,终点与持续时间
             DoubleAnimation heightAnimation =
                new DoubleAnimation(50, 100, new Duration(TimeSpan.FromSeconds(0.8)));

            //开始动画
            //变化不是阻塞的,而是异步,所以看上去长度与高度几乎是同时变化
             btn.BeginAnimation(Button.WidthProperty, widthAnimation);
             btn.BeginAnimation(Button.HeightProperty, heightAnimation);

这样我们就可以得到一个简单的动画,它在0.8秒内将按钮的长度由200变化到400,高度由50变化到100.

但我们会发现当动画结束后,按钮的大小保持在(400,100), 如果我们需要动画结束后将按钮大小恢复到原大小,
那么我们应该指定另外一个参数:FillBehavior

//指定长度变化的起点,终点与持续时间,并在动画结束时恢复原值
             DoubleAnimation widthAnimation =
                new DoubleAnimation(200, 400, new Duration(TimeSpan.FromSeconds(0.8)), FillBehavior.Stop);

            //指定高度变化的起点,终点与持续时间,并在动画结束时恢复原值
             DoubleAnimation heightAnimation =
                new DoubleAnimation(50, 100, new Duration(TimeSpan.FromSeconds(0.8)), FillBehavior.Stop);


分享一个动画的例子 :

<Button Name="btnTra" Tag="Tran" Margin="5,0,0,0" ImageSource="Images/jian.png"
Click="btnClear_Click">
                              <Dev:ButtonEx.Triggers>
                                    <EventTrigger RoutedEvent="Dev:ButtonEx.Loaded">
                                        <BeginStoryboard>
                                          <Storyboard>
                                                <DoubleAnimation From="0.1" To="1.0"
RepeatBehavior="Forever" Duration="0:0:1" Storyboard.TargetProperty="Opacity"/>
                                          </Storyboard>
                                        </BeginStoryboard>
                                    </EventTrigger>                                                
                              </Dev:ButtonEx.Triggers>
                            </Dev:Button>

DoubleAnimation 可以用C#写,也可以用XAML写。

下面是分享一个C#的DoubleAnimation代码示例

DoubleAnimation d = new DoubleAnimation(
                     0,
                     373,
                     new Duration(TimeSpan.FromMilliseconds(8000))
                     );
            d.RepeatBehavior = RepeatBehavior.Forever;
            d.AutoReverse = true;
            Storyboard s = new Storyboard();
            Storyboard.SetTarget(d, image1);
            Storyboard.SetTargetProperty(d, new PropertyPath("(Canvas.Left)"));
            s.Children.Add(d);
            s.Begin();

headindotcn 发表于 2013-9-10 10:43:40

谢谢分享,学习了
页: [1]
查看完整版本: DoubleAnimation简单教程-WPF