频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

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

来源:51cto.com 作者:daizhenj… 出处:巧巧读书 2008-07-18 进入讨论组
下一页 1 2 3 

        在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 
收藏此文】【 】【打印】【关闭
较早的文章:web.config文件配置

较新的文章:在silverlight中使用downloader
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章