首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> ASP.NET >> 正文

使用silverlight中的Storyboard实现动画效果

        在silverlight中,可以使用StoryBoard(故事板)不实现类似于动画的效果,本文就是借助该对象来实现一个相册显示的例子,其运行效果如下图所示(鼠标放在中间图片上,然后离开):

        在正文开始之后,先介绍一下Storyboard, 其定义如下:

              Controls animations with a timeline, and provides object and property targeting
        information for its child animations.

        因为它用时间线(timeline)来控制,并提供了要绑定的对象和目标属性信息。其在XAML中的

        格式如下:

         <Storyboard   >
            oneOrMoreChildTimelines
        </Storyboard>

        其中的oneOrMoreChildTimelines可以是如下任一或多个对象元素:

         Storyboard, ColorAnimation, ColorAnimationUsingKeyFrames, DoubleAnimation,
        DoubleAnimationUsingKeyFrames, PointAnimation, PointAnimationUsingKeyFrames

        下面就其中几个主要的元素作如下演示说明,首先请看“DoubleAnimation”:

        DoubleAnimation:当动画值的变化(FROM ...TO...)类型是 Double型时使用。

        下面演示的就是矩形(MyAnimatedRectangle)的“Opacity”(透明度)属性在一秒内从1到0的动画(参数说明见注释)。

         <StackPanel>
               <StackPanel.Resources>
              <!--将Storyboard 放入Resources中是为了更方便的在代码中引用 Storyboard 以及进行互操作,如
        start, stop, pause,和恢复Storyboard. -->
                   <Storyboard x:Name="myStoryboard">
                       <DoubleAnimation
                          Storyboard.TargetName="MyAnimatedRectangle"
                    Storyboard.TargetProperty="Opacity"
                    From="1.0"
                    To="0.0"
                    Duration="0:0:1"
                    AutoReverse="True"
                    RepeatBehavior="Forever" />
                   </Storyboard>
               </StackPanel.Resources>
               <!--参数说明:
                   Storyboard.TargetName:附加属性操作到指定的对象上;
                   Storyboard.TargetProperty:要操作指定对象的属性;
                   From..To :上述属性值的起始范围;
                   Duration: 在多少时间内完成上述属性值的变化;
                   AutoReverse:是否在vanishes 之后 fade back 到初始状态;
                   RepeatBehavior:指示当前animation 不断反复
               -->
               <Rectangle MouseLeftButtonDown="Mouse_Clicked"
           x:Name="MyAnimatedRectangle"
           Width="100" Height="100" Fill="Blue" />
        </StackPanel>

        ColorAnimation:当动画值的变化(FROM ...TO...)类型是 Color型时使用。

        下面演示的是myStackPanel背景色在4秒内从红到绿的动画。

         <StackPanel x:Name="myStackPanel" Background="Red" Grid.Row="0"
                Loaded="Start_Animation">
            <TextBlock Foreground="White">使用层级方式绑定TargetProperty:</TextBlock>
            <StackPanel.Resources>
                <Storyboard x:Name="colorStoryboard">
                    <ColorAnimation BeginTime="00:00:00" Storyboard.TargetName="myStackPanel"
                Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"
                From="Red" To="Green" Duration="0:0:4" />
                </Storyboard>
            </StackPanel.Resources>
        </StackPanel>

        下面XAML代码与上面所示的实现效果相同:

         <StackPanel Loaded="Start_Animation">
             <TextBlock Foreground="White">普通方式绑定TargetProperty:</TextBlock>
             <StackPanel.Resources>
                 <Storyboard x:Name="colorStoryboard2">
                     <ColorAnimation BeginTime="00:00:00" Storyboard.TargetName="mySolidColorBrush"
            Storyboard.TargetProperty="Color" From="AliceBlue" To="Green" Duration="0:0:4" FillBehavior="Stop"/>
                 </Storyboard>
             </StackPanel.Resources>
             <StackPanel.Background>
                 <SolidColorBrush x:Name="mySolidColorBrush" Color="AliceBlue" />
             </StackPanel.Background>
        </StackPanel>

        接下来是PointAnimation:  当动画值的变化(FROM ...TO...)类型是 Point型时使用。

        下面的XAML演示的是EllipseGeometry对象从point(20,200)移动到point(400,100)的动画。

         <PointAnimation Storyboard.TargetProperty="Center"
          Storyboard.TargetName="MyAnimatedEllipseGeometry"
          Duration="0:0:5"
          From="20,200"
          To="400,100"
          RepeatBehavior="Forever" />
               </Storyboard>
           </Canvas.Resources>
        <Path Fill="Blue">
               <Path.Data>
                   <!-- Describes an ellipse. -->
                   <EllipseGeometry x:Name="MyAnimatedEllipseGeometry"
          Center="20,20" RadiusX="15" RadiusY="15" />
               </Path.Data>
        </Path>

[1] [2] [3] 下一页

【责编:michael】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航