Windows Store App 插值动画

插值动画支持DoubleAnimation、ColorAnimation和PointAnimation类型的动画。其中比较常用的是DoubleAnimation动画,它可以用来控制界面元素的Double类型属性值的动态变化,从而使元素在界面上呈现我们期望的动画效果。ColorAnimation和PointAnimation动画与DoubleAnimation动画类似,通过改变元素的Color类型和Point类型的属性值就可以实现这两种动画。下面首先介绍一下上述动画对象的一些共有属性。

q  Duration,指定一次完整的动画周期,Duration 属性值的格式是“小时:分钟:秒”。

q  AutoReverse,指定时间线在达到Duration属性指定的终点后是否倒退。如果将此动画属性设置为True,动画会从终止状态向起始状态反向播放。

q  RepeatBehavior,指定动画的播放次数,如果该属性值为Forever,说明动画从一开始时就无限次重复地播放。

接下来以DoubleAnimation动画为例,通过改变椭圆的不透明度产生亮暗交替变换的动画效果。

在一个打开的Windows 应用商店项目中新建一个空白页,并命名为DoubleAnimationPage,双击打开此页面的DoubleAnimationPage.xaml文件,在原有的Grid元素中添加如下代码。

<StackPanel>

    <StackPanel.Resources>

        <Storyboard  x:Name="storyboard">

            <DoubleAnimation

                Storyboard.TargetProperty="Opacity"

                Storyboard.TargetName="ellipse"

                From="1"

                To="0"

                AutoReverse="True"

                RepeatBehavior="Forever"

                Duration="0:0:2">

            </DoubleAnimation>

        </Storyboard>

    </StackPanel.Resources>

</StackPanel>

<Ellipse x:Name="ellipse" Fill="White"

PointerPressed="Animation_Begin" Height="200" Width="300" Margin="200,100,200,100"/>        

以上代码在StackPanel元素的资源字典StackPanel.Resources中添加一个作为动画资源的Storyboard元素,并命名为storyboard,以便在后台文件中调用storyboard对象的Begin方法启动动画。然后在Storyboard 元素中添加一个DoubleAnimation动画,并设置DoubleAnimation动画控制的属性为Opacity。接着设置From属性的值为1、To属性的值为0,表示Opacity属性的值会从1变到0,即产生由亮变暗的动画效果。然后分别设置动画对象DoubleAnimation的AutoReverse和RepeatBehavior属性值为True和Forever,这样动画就可以无限次的正反交替播放。完成了Storyboard元素相关属性的设置之后,下面继续在原有的Grid元素中添加一个名为“ellipse”的Ellipse元素作为动画目标,为Ellipse元素的PointerPressed事件定义一个名为“Animation_Begin”的事件处理方法,当触发此事件时将动画启动。最后设置Storyboard元素的TargetName属性值为ellipse,将动画效果定位到Ellipse元素上。

接下来在后台代码中添加Animation_Begin事件处理方法,代码如下所示:

private void Animation_Begin (Object sender, PointerRoutedEventArgs e)

{

      storyboard.Begin();

}

        Animation_Begin方法中的代码很简单,只需调用storyboard对象的Begin方法就能够启动动画。

运行此页面,单击屏幕中的椭圆会触发其事件处理方法,可以看到椭圆产生了亮暗交替变换的动画效果,如图10-5所示。

图10-5 椭圆控件亮暗交替变换动画效果图

从图10-5中可以看到,椭圆最初处于最亮状态,动画开始时,它会逐渐变暗,直到彻底看不见,然后椭圆还会以相反方向进行亮暗变化,这样就实现了椭圆亮暗交替变化的动画效果。

在上面的示例中读者已经知道如果要对演示图板动画加以控制,需要在后台文件中添加相应的事件处理方法。例如可以调用Storyboard对象的Begin方法可以启动动画,除此之外还可以调用Storyboard对象的Pause 、Resume 和Stop方法来控制动画的暂停、恢复和停止。

值得注意的是,如果产生的动画效果影响了界面的布局,例如改变了元素的宽度、高度或者改变了元素在界面中的位置,此时要将动画对象的EnableDependentAnimation属性值设置为True,这样才能确保动画能正常播放。下面针对这种情况,为椭圆添加一个PointAnimation动画使界面中的椭圆实现位置移动的动画效果。

在一个打开的Windows 应用商店项目中新建一个空白页,并命名为PointAnimationPage。

双击打开此页面的PointAnimationPage.xaml文件,在Grid原有的元素中添加如下代码。

<Canvas>

    <Canvas.Resources>

        <Storyboard  x:Name="storyboard">

            <PointAnimation

                EnableDependentAnimation="True"

               Storyboard.TargetProperty="Center"

                Storyboard.TargetName="AnimatedEllipseGeometry"

                Duration="0:0:5"

                From="30,400"

                To="400,0"

                RepeatBehavior="Forever"/>

        </Storyboard >

    </Canvas.Resources>

</Canvas>

<Path Fill="Red">

    <Path.Data>

        <!--显示一个椭圆,中心点是(20,20),横半轴为15,纵半轴为15 -->

        <EllipseGeometry x:Name="AnimatedEllipseGeometry"

Center="30,400" RadiusX="30" RadiusY="30"/>

    </Path.Data>

</Path>

<StackPanel Orientation="Horizontal" Canvas.Left="10" Canvas.Top="265">

    <!--启动动画的按钮 -->

    <Button Click="Animation_Begin" Width="80" Height="40" Margin="2" Content="开始动画"/>

    <!--暂停动画的按钮-->

    <Button Click="Animation_Pause" Width="80" Height="40" Margin="2" Content="暂停动画"/>

    <!--恢复动画的按钮-->

    <Button Click="Animation_Resume" Width="80" Height="40" Margin="2" Content="恢复动画"/>

    <!--终止动画的按钮 -->

    <Button Click="Animation_Stop" Width="80" Height="40" Margin="2" Content="终止动画"/>

</StackPanel>

上面的代码首先在Canvas元素的资源字典Canvas.Resources中添加一个作为动画资源的Storyboard元素,并命名为storyboard,以便在后台PointAnimationPage.xaml.cs文件中通过Storyboard对象的相关方法来对动画效果进行控制。接着在Storyboard 元素中添加一个PointAnimation动画,并设置PointAnimation动画控制的属性为Center,定义From属性的值为坐标点(30,400)、To属性的值为坐标点(400,0),表示中心点Center的值会从坐标点(30,400)过渡到坐标点(400,0)。然后又添加了一个与Canvas元素同级的Path元素,同时在Path.Data元素中添加一个名为“AnimatedEllipseGeometry”的EllipseGeometry元素作为动画目标。并设置EllipseGeometry元素的Center属性值为坐标点(20,20),从而确定EllipseGeometry元素的位置,定义RadiusX、RadiusY属性值分别为30像素以指定此元素的大小。接着设置Storyboard元素的TargetName属性值为AnimatedEllipseGeometry,将动画效果定位到EllipseGeometry元素上。最后在Grid元素中添加一个StackPanel元素,其中含有4个按钮,并且每个按钮都定义了用于启动、暂停、恢复和停止动画的单击事件,以便控制的动画的播放状态。

接下来打开PointAnimationPage.xaml.cs文件,为这4个控制动画播放的按钮添加事件处理方法,代码如下所示:

private void Animation_Begin(object sender, RoutedEventArgs e)

{

    storyboard.Begin();

}

private void Animation_Pause(object sender, RoutedEventArgs e)

{

    storyboard.Pause();

}

private void Animation_Resume(object sender, RoutedEventArgs e)

{

    storyboard.Resume();

}

private void Animation_Stop(object sender, RoutedEventArgs e)

{

    storyboard.Stop();

}

上面的代码通过调用storyboard对象的Begin、Pause、Resume和Stop方法,即可实现对动画的播放控制。

运行此页面,单击开始动画、暂停动画、恢复动画、终止动画按钮会触发相应的事件处理方法,从而对椭圆的移动进行控制,动画效果如图10-6所示。

图10-6  PointAnimation动画

从图10-6中可以看到,当单击开始动画按钮时,椭圆会从图左下方的位置沿着固定的坐标向右上方移动。在此示例中,椭圆的起始位置坐标是(30,400),结束位置坐标是(400,0),这说明椭圆向右移动了370像素,向上移动了400像素。

以上示例通过改变EllipseGeometry元素的Center属性值使界面中的椭圆以固定的轨迹进行运动。除此之外,EllipseGeometry元素还有RadiusX和RadiusY两个属性,分别代表椭圆的横半轴和纵半轴,我们还可以在演示图板中添加两个DoubleAnimation动画分别用来控制RadiusX和RadiusY属性值,这样即可实现椭圆放大或者缩小的动画效果。

时间: 2024-08-07 18:09:48

Windows Store App 插值动画的相关文章

Windows Store App 过渡动画

Windows Store App 过渡动画     在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发生的变化,不会让用户觉得元素的位置变化过于突然.下面通过一个示例介绍如何为界面中的文本块添加过渡动画. 在一个打开的Windows应用商店项目中新建一个空白页,并命名为TransitionAnimationPage,双击打开此页面的TransitionAnimationPage.xaml文件,在Gr

Windows Store App 关键帧动画

关键帧动画和插值动画类似,同样可以根据目标属性值的变化产生相应的动画效果,不同的是,插值动画是在两个属性值之间进行渐变,而关键帧动画打破了仅通过两个属性值控制动画的局限性,它可以在任意多个属性值之间进行变化,这种变化方式可以是线性渐变也可以是瞬间突变.开发人员可以根据应用本身的需求,通过不同的关键帧设置动画元素的多个属性值,制作出更加复杂和绚丽的动画效果. 1.DoubleAnimationUsingKeyFrames关键帧动画 DoubleAnimationUsingKeyFrames关键帧动

Windows Store App 主题动画

Windows 8系统的动画库中包含了丰富的主题动画,在开发Windows应用商店应用时,使用主题动画编写较少的代码即可实现所期望的动画效果.下面介绍一些常用的主题动画,读者可以根据每种主题动画提供的动画效果,在应用程序中加入相应的主题动画. q  FadeInThemeAnimation,代表预配置不透明度动画,用于设置控件在屏幕中的淡入效果. q  FadeOutThemeAnimation,用于设置控件从界面中删除或隐藏时的淡出效果. q  DropTargetItemThemeAnima

C#学习(九)之Windows Store App &amp; WP 开发小记(一)

由于课程已经讲述完毕,所以本次学习记录就讨论记录一下我在Windows Store App & WP开发中遇到的一些问题与收获. 一.数据库(Sqlite)的使用 虽然资料很难找,但sqlite在这两个平台的使用还是很简单的. 首先是环境配置阶段: 1.工具->拓展与更新->联机,然后在右上搜索sqlite,之后下载安装下图两个打勾的拓展包,注意要重启VS方才生效. 2.项目->管理NuGet程序包->联机,搜索sqlite,安装下图打勾内容,如果项目多出下图两个文件即安装

Windows Store App 中使用Scrollviewer实现缩放功能

Windows Store App中可以直接使用Scrollviewer实现缩放功能,基本代码如下: <ScrollViewer Background="Yellow" HorizontalScrollBarVisibility="Visible" MaxZoomFactor="2" MinZoomFactor="0.5" VerticalScrollBarVisibility="Visible" Z

在桌面程序上(Winform or others)和Metro/Modern 程序(Windows store app)的交互(相互打开,配置读取等)

这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情无法做到,因此额外做了一个.NET桌面引擎来辅助,那么现在就需要让这两个不同环境的程序进行交互. 第一步:在桌面应用引擎中,唤醒商店应用. 根据MSDN解释,这边最简单的办法是使用协议(URI protocol)来解决. 1:打开程序的Package.appxmanifest,在声明中添加协议 名称

windows store app 读写图片

1 using System; 2 using System.Threading.Tasks; 3 using System.Runtime.InteropServices.WindowsRuntime; 4 using Windows.Graphics.Imaging; 5 using Windows.UI.Xaml.Media.Imaging; 6 using Windows.Storage; 7 using Windows.Storage.Pickers; 8 using Windows.

Windows Store App 中挂起时,程序奔溃的问题

昨天在开发windows phone 8.1程序时,发现程序在挂起的时候,会自动退出.通过调试发现错误信息是 System.Runtime.InteropServices.COMException (0x80004005): Unspecified error GetNavigationState doesn't support serialization of a parameter type which was passed to Frame.Navigate. at Windows.UI.

Get a developer license for windows store app(转)

Developer licenses are free, and you can get as many as you need so that all your test machines have one. If you get one or more developer licenses by using a Microsoft account, you must renew them every 30 days. If you get one or more developer lice