知识大全 使用silverlight中的Storyboard实现动画效果

Posted 操作

篇首语:上下观古今,起伏千万途。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用silverlight中的Storyboard实现动画效果相关的知识,希望对你有一定的参考价值。

使用silverlight中的Storyboard实现动画效果  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在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 (透明度)属性在一秒内从 到 的动画(参数说明见注释)          <StackPanel>               <StackPanel Resources>              <! 将Storyboard 放入Resources中是为了更方便的在代码中引用 Storyboard 以及进行互操作 如        start stop pause 和恢复Storyboard >                   <Storyboard x:Name= myStoryboard >                       <DoubleAnimation                          Storyboard TargetName= MyAnimatedRectangle                     Storyboard TargetProperty= Opacity                     From=                     To=                     Duration= : :                     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= Height= Fill= Blue />        </StackPanel>

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

  下面演示的是myStackPanel背景色在 秒内从红到绿的动画          <StackPanel x:Name= myStackPanel Background= Red Grid Row=                 Loaded= Start_Animation >            <TextBlock Foreground= White >使用层级方式绑定TargetProperty </TextBlock>            <StackPanel Resources>                <Storyboard x:Name= colorStoryboard >                    <ColorAnimation BeginTime= : : Storyboard TargetName= myStackPanel                 Storyboard TargetProperty= (Panel Background) (SolidColorBrush Color)                 From= Red To= Green Duration= : : />                </Storyboard>            </StackPanel Resources>        </StackPanel>

  下面XAML代码与上面所示的实现效果相同          <StackPanel Loaded= Start_Animation >             <TextBlock Foreground= White >普通方式绑定TargetProperty </TextBlock>             <StackPanel Resources>                 <Storyboard x:Name= colorStoryboard >                     <ColorAnimation BeginTime= : : Storyboard TargetName= mySolidColorBrush             Storyboard TargetProperty= Color From= AliceBlue To= Green Duration= : : FillBehavior= Stop />                 </Storyboard>             </StackPanel Resources>             <StackPanel Background>                 <SolidColorBrush x:Name= mySolidColorBrush Color= AliceBlue />             </StackPanel Background>        </StackPanel>

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

  下面的XAML演示的是EllipseGeometry对象从point( )移动到point( )的动画          <PointAnimation Storyboard TargetProperty= Center           Storyboard TargetName= MyAnimatedEllipseGeometry           Duration= : :           From=           To=           RepeatBehavior= Forever />               </Storyboard>           </Canvas Resources>        <Path Fill= Blue >               <Path Data>                   <! Describes an ellipse >                   <EllipseGeometry x:Name= MyAnimatedEllipseGeometry           Center= RadiusX= RadiusY= />               </Path Data>        </Path>

  好了 有了上面的介绍之后 我们下面着手开发这个DEMO

  首先我们建立一个silverlight application 并将其命名为 Animation_Sample

  然后我们要去找几张相册用的图片 将其放在项目中的resource文件夹下 并将其设置为资源 如下图所示

  

  然后在xaml中加入如下代码段作为Image元素对相应图片的引用          <Grid x:Name= LayoutRoot Background= White MouseEnter= LayoutRoot_MouseEnter             MouseLeave= LayoutRoot_MouseLeave >            <Image x:Name= image_one Source= resource/img_one jpg Height= Width= Canvas Left=                  Canvas Top= Margin= ></Image>            <Image x:Name= image_o Source= resource/img_o jpg Height= Width= Canvas Left=                  Canvas Top= Margin= ></Image>            <Image x:Name= img_three Source= resource/img_three jpg Height= Width= Canvas Left=                  Canvas Top= Margin= ></Image>            <Image x:Name= img_four Source= resource/img_four jpg Height= Width= Canvas Left=                  Canvas Top= Margin= ></Image>            <Image x:Name= img_five Source= resource/img_five jpg Height= Width= Canvas Left=                 Canvas Top= Margin= ></Image>        </Grid>

  然后在该xaml文件上击鼠标右键 选择 在 Expression Blend 中打开 菜单项 然后在打开的Blend 窗口中按下图中所指示的方式来创建一个Storyboard 名为 image Storyboard

  

  接着拖动当前帧到 秒处 执行 record keyframe 操作

  

  然后对左侧的图片进行 rotate transfer 和 scale transfer 操作 如下图

  

  而其最终的值如下图所示

  

  这里我们可以通过下图所示演示一下当前图片从 秒到 秒的运行情况

  

  同理对其它图片进行相类似的操作后 就可以将当前文件进行保存 并单击F 进行试运行了 接着 我们还要再切换回VS完成动画播放的工作 在本DEMO中 因为使用了鼠标移入移出方式来实现动画的播放任务 所以我们要在相应的xaml cs文件中加入storyboard的 Begin() 方法绑定如下          private void LayoutRoot_MouseEnter(object sender MouseEventArgs e)                    image Storyboard Begin();       

  这样就可以运行该DEMO了

  到这里 我们只是实现了将图片从初始位置移动到指定位置 而没有实现reverse操作 即图片从分散展示状态再回到实始状态 但实现这个功能也非常简单 主要是用了一个小技巧

   首先我们要对当前的storyboard执行复制操作 如下图

  

   然后在新生成的storyboard中修改其名称 并对其进行reverse操作 如下图

  

  这样我们就得到了一个对展开的 逆操作 的storyboard 然后我们在xaml cs中调用这个storyboard的Begin()方法即可 如下          private void LayoutRoot_MouseLeave(object sender MouseEventArgs e)                    image Storyboard_Reverse Begin();       

cha138/Article/program/net/201311/12948

相关参考

知识大全 在silverlight中使用downloader

  downloader对象为Silverlight插件提供了下载功能其通过HTTP(get)请求异步下载指定的内容  downloader所支持的event包括  Completed下载完成(Dow

知识大全 Silverlight 中给TreeView添加复选框

Silverlight中给TreeView添加复选框  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 在Silverlight应用程序中操作Cookie

在Silverlight应用程序中操作Cookie  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 如何配置支持Silverlight的Web服务器

如何配置支持Silverlight的Web服务器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 应用程序Silverlight获取ASP.NET页面参数

应用程序Silverlight获取ASP.NET页面参数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 Silverlight应用程序获取ASP.NET页面参数

Silverlight应用程序获取ASP.NET页面参数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 虽非完美但却值得选择 Silverlight客观评测

虽非完美但却值得选择Silverlight客观评测  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 谈谈Silverlight 2中视觉状态管理第一部分

谈谈Silverlight2中视觉状态管理第一部分  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 新工具使Eclipse成为Silverlight IDE

新工具使Eclipse成为SilverlightIDE  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 赫郎明月夜,歌曲动寒川。 这句古诗中的“动”是什么意思

赫郎明月夜,歌曲动寒川。这句古诗中的“动”是什么意思?再解释一下诗句的意思。谢谢了啊!~,歌曲动寒川.这句古诗中的“动”是什么意思秋浦歌炉火照天地,红星乱紫烟。赧郎明月夜,歌曲动寒川。赧郎,指的是冶铜