微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight之动画8

Silverlight动画

源代码下载

1.       简介

动画是相对于静止而言的。能够让视觉感觉在动的东西。

Silverl中只能对对值类型为 DoubleColor Point 属性执行简单的动画处理。

2.       使 rectangle1矩形逐渐进入视野并从视野中逐渐消失

1) 定义矩形Rectangle

rectangle1矩形定义

<Rectangle Height="100" Name="rectangle1" stroke="Black" strokeThickness="1" Width="200" Fill="Blue"/>

2) 定义动画Storyboard

                 <!--使 rectangle1矩形逐渐进入视野并从视野中逐渐消失-->

                <Storyboard x:Name="str1">

                    <DoubleAnimation Storyboard.TargetName="rectangle1" Storyboard.TargetProperty="Opacity"  From="1.0" To="0.0"  Duration="0:0:1"/>

                </Storyboard>

3) DoubleAnimation对矩形属性Opacity进行动画处理。

4) 启动动画

str1.Begin();

3.       开始、停止、暂停和继续动画播放

Storyboard 提供多种方法,这些方法允许您控制Storyboard动画的播放,

 Begin开始Stop停止、Pause暂停Resume继续

4.       控制动画的开始时间

顾名思义,使用BeginTime属性可以指定动画对象活动开始点的时间。

5.       动画类型

Silverlight 提供两大类动画类型,From/To/By 动画和关键帧动画。下表说明这些动画类别及其

属性类型

对应的基本 (From/To/By) 动画

对应的关键帧动画

Color

ColorAnimation

ColorAnimationUsingKeyFrames

Double

DoubleAnimation

DoubleAnimationUsingKeyFrames

Point

PointAnimation

PointAnimationUsingKeyFrames

Object

ObjectAnimationUsingKeyFrames

DurationAutoReverseRepeatBehavior是三个常用的计时属性

Duration完成动画的时间格式{001}时:分:秒

AutoReverse属性指定时间线在到达其Duration的终点后是否倒退。如果将此动画属性设置为true,则动画在到达其Duration的终点后将倒退,即从其终止值向其起始值反向播放。认情况下,该属性false

RepeatBehavior重复播放次数

举例关键关键帧动画:

  <Storyboard x:Name="str5">

                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ellipse2" Storyboard.TargetProperty="Fill" AutoReverse="True" Duration="0:0:6" RepeatBehavior="forever">

                        <discreteObjectKeyFrame KeyTime="0:0:3">

                            <discreteObjectKeyFrame.Value>

                                <LinearGradientBrush>

                                    <GradientStop Color="Red" Offset="0"></GradientStop>

                                    <GradientStop Color="Blue"  Offset="1"></GradientStop>

                                </LinearGradientBrush>

                            </discreteObjectKeyFrame.Value>

                        </discreteObjectKeyFrame>

                        <discreteObjectKeyFrame KeyTime="0:0:4">

                            <discreteObjectKeyFrame.Value>

                                <LinearGradientBrush>

                                    <GradientStop Color="Blue" Offset="0"></GradientStop>

                                    <GradientStop Color="Black"  Offset="1"></GradientStop>

                                </LinearGradientBrush>

                            </discreteObjectKeyFrame.Value>

                        </discreteObjectKeyFrame>

                        <discreteObjectKeyFrame KeyTime="0:0:5">

                            <discreteObjectKeyFrame.Value>

                                <LinearGradientBrush>

                                    <GradientStop Color="Yellow" Offset="0"></GradientStop>

                                    <GradientStop Color="Black"  Offset="1"></GradientStop>

                                </LinearGradientBrush>

                            </discreteObjectKeyFrame.Value>

                        </discreteObjectKeyFrame>

                    </ObjectAnimationUsingKeyFrames>

                </Storyboard>

 

6.       对属性应用动画

1) 定义椭圆

     <Ellipse Height="52" Name="ellipse1" stroke="Black" strokeThickness="1" Width="109">

                <Ellipse.Fill>

                    <SolidColorBrush x:Name="scb1" Color="Red"></SolidColorBrush>

                </Ellipse.Fill>

            </Ellipse>

2) 定义动画对Color属性

                   <!--属性进行动画处理-->

                <Storyboard x:Name="str3">

                    <ColorAnimation Storyboard.TargetName="scb1" Storyboard.TargetProperty="Color" From="Red" To="Black" Duration="0:0:1" AutoReverse="True" RepeatBehavior="forever"></ColorAnimation>

                </Storyboard>

3) 播放动画

       str3.Begin();

7.       对变换应用动画

1) 定义矩形

<Ellipse Height="52" Name="ellipse1" stroke="Black" strokeThickness="1" Width="109">

                <Ellipse.RenderTransform>

                 <RotateTransform x:Name="rtf1" CenterX="20"CenterY="20" Angle="10"></RotateTransform>

                </Ellipse.RenderTransform>

            </Ellipse>

2) 定义动画

 <!--对变换进行动画处理-->

                <Storyboard x:Name="str4">

                    <DoubleAnimation Storyboard.TargetName="rtf1" Storyboard.TargetProperty="Angle" AutoReverse="True" From="90" To="180"  RepeatBehavior="forever"></DoubleAnimation>

                </Storyboard>

 

3) 播放动画

Str4.Begin();

8.       动画完成事件

str1.Completed += new EventHandler(str1_Completed);

void str1_Completed(objectsender,EventArgs e)

        {

            MessageBox.Show("动画1完成");

        }

9.       缓动函数

1) 定义椭圆

  <Ellipse Height="39" Name="ellipse3" stroke="Black" strokeThickness="1" Fill="Blue" Width="132"/>

2) 定义动画

  <!--动画函数用法-->

                <Storyboard x:Name="str6">

                    <DoubleAnimation Storyboard.TargetName="ellipse3" Storyboard.TargetProperty="Height" From="30" To="200" AutoReverse="True" RepeatBehavior="forever">

                        <DoubleAnimation.EasingFunction>

                            <!--<BounceEaseBounces="2" EasingMode="EaSEOut"

                               Bounciness="2" />-->

                            <CircleEaseEasingMode="EaSEOut"  />

                        </DoubleAnimation.EasingFunction>

                    </DoubleAnimation>

                </Storyboard>

3) 播放动画

str6.Begin();

说明:

除了通过从 EasingFunctionBase 继承来创建您自己的自定义缓动函数外,您还可以使用运行时提供的若干缓动函数之一来创建常见效果

       BackEase:在某一动画开始沿指示的路径进行动画处理前稍稍收回该动画的移动。

       BounceEase:创建弹回效果

       CircleEase:创建使用循环函数加速和/或减速的动画。

       CubicEase:创建使用公式 f(t) = t3 加速和/或减速的动画。

       ElasticEase:创建表示弹簧在停止前来回振荡的动画。

       ExponentialEase:创建使用指数公式加速和/或减速的动画。

       PowerEase:创建使用公式 f(t) = tp(其中,p 等于 Power 属性)加速和/或减速的动画。

       QuadraticEase:创建使用公式 f(t) = t2 加速和/或减速的动画。

       QuarticEase:创建使用公式 f(t) = t4 加速和/或减速的动画。

       QuinticEase:创建使用公式 f(t) = t5 加速和/或减速的动画。

       SineEase:创建使用正弦公式加速和/或减速的动画。

 

 使用EasingMode属性更改缓动函数的行为方式
•EaseIn:内插遵循与缓动函数相关联的算术公式。
•EaSEOut:内插遵循 100% 内插减去与缓动函数相关联的公式输出
•EaseInOut:内插将 EaseIn 用于动画的前半部分,将 EaSEOut 用于动画的后半部分。

源代码下载

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐