代码改变世界

WPF的动画(3)

2010-07-23 13:17  Clingingboy  阅读(1523)  评论(2编辑  收藏  举报

 

 

一.控制动画

两种方式(需要注意的是命名作用域必须相同)

1.xaml
以TriggerAction的方式调用内部StoryBoard方法
来自msdn

  • PauseStoryboard:暂停 Storyboard。

  • ResumeStoryboard:继续暂停的 Storyboard。

  • SetStoryboardSpeedRatio:更改 Storyboard 速度。

  • SkipStoryboardToFill:使 Storyboard 前进到其填充期的末尾(如果有填充期)。

  • StopStoryboard:停止 Storyboard。

  • RemoveStoryboard:移除 Storyboard。

    blend

    image

    2.使用代码声明storyboard,调用方法

        <Window.Resources>
            <Storyboard x:Key="demoStoryboard">
                <DoubleAnimation 
                                    Storyboard.TargetProperty="Width"
                                                 From="0"
                                                 To="300" Duration="0:0:5" />
            </Storyboard>
        </Window.Resources>
    

    此时不需要定义Storyboard.TargetName

    Storyboard sb = this.FindResource("demoStoryboard") as Storyboard;
    sb.Begin(demo2);

    还是一定要注意名称范围

    二.在没有StoryBoard情况下使用Animation

    xaml是不支持的,必须使用代码进行调用

    var _doubleAnimation = new DoubleAnimation();
    _doubleAnimation.Duration = TimeSpan.FromSeconds(1);
    _doubleAnimation.To = 200;
    demo2.BeginAnimation(Rectangle.WidthProperty, _doubleAnimation);

     

    BeginAnimation实际上调用了ApplyAnimationClock方法

    demo2.ApplyAnimationClock(Rectangle.WidthProperty, _doubleAnimation.CreateClock());

    三.关键帧动画

    其概念与flash中的关键帧概念相同,关键帧越多,动画效果就越真实,blend中产生的代码大多为关键帧动画

  •                         <DoubleAnimationUsingKeyFrames
                    Storyboard.TargetName="demoRectangle"
                    Storyboard.TargetProperty="Width"
                    Duration="0:0:10">
                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0" />
                                <LinearDoubleKeyFrame Value="350" KeyTime="0:0:1" />
                                <LinearDoubleKeyFrame Value="350" KeyTime="0:0:2" />
                                <LinearDoubleKeyFrame Value="50" KeyTime="0:0:3" />
                                <LinearDoubleKeyFrame Value="200" KeyTime="0:0:8" />
                            </DoubleAnimationUsingKeyFrames>
    

    四.缓冲效果

    wpf4新增内容,内置的关键帧物理效果,具体的在线sl效果都可以看的到

    http://samples.msdn.microsoft.com/Silverlight/SampleBrowser/content.htm