WPF中动态创建动画(一)

最近开始研究WPF,WPF是微软在.NET3.0中新加进的功能,一同被加进来的还有WCF、WF,这三个新的特性使得.NET变得更加丰富。

 

关于WPF,个人比较推荐的入门书籍是Charles Petzold 的《Windows Presentation Foundation程序设计指南》一书,又名:Application = Code + Markup,正如书名所言,这本书从C#代码开始讲起,直到最后引入xaml,对于习惯了C#语言的开发者来说是一种很好的入门方式。

 

由于我个人比较喜欢使用C#而非标记语言,所以一般情况下我都会使用C#代码来实现。

 

好了,废话不多说了,步入正题。

 

我先介绍第一种在WPF中创建动画的方法,也是官方MSDN推荐的方法,即使用Storyboard创建动画。

首先在VS2010中新建一个WPF Application(VS2008也可以,不过VS2005默认情况下是没有WPF的模板的,建议都用VS2010吧,个人感觉比前几个版本都要好用),默认将创建两个xaml文件,一个是App.xaml,这个是程序的入口所在,还有一个是自动生成的默认程序界面MainWindow.xaml。

进入MainWindow.xaml的xaml编辑界面中,将其代码写成这样:

 

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Width="800" Height="600">


    <Canvas x:Name="Carrier" Width="800" Height="600" Background="Silver"
            MouseLeftButtonDown="Carrier_MouseLeftButtonDown">
    </Canvas>


</Window>

 

可以看出,我们再这个MainWindow里添加了一个Canvas Carrier,设置其背景为银色(Silver),并为它添加了一个鼠标左键点击的事件

 

接下来,我们进入MainWindow.xaml.cs文件中,添加如下所示的代码:

 

从上面代码我们看到,在鼠标点击了Canvas之后,我们先获取鼠标点击相对于其的坐标位置p,然后创建storyboard以及动画doubleAnimation,doubleAnimation有三个参数,分别为:开始值、结束值、动画时间。接着通过Storyboard.SetTarget()和Storyboard.SetTargetProperty()这两个静态函数设置动画的目标和动画发生时修改的目标属性。然后将动画加进storyboard中,重复两次,分别实现X轴和Y轴方向上的动画。最后将storyboard加入Resources中以使程序能够识别。一切OK后,调用storyboard.Begin()来开始动画。

 

按下Ctrl+F5,看看运行效果吧,试着用鼠标在窗口上随便点点,怎么样,是不是看到了方块在运动?

 

 

小结:Storyboard动画是基于时间线的一帧一帧的矢量动画,原理是通过实时的修改动画对象的某一或多个属性来产生一帧一帧的动画。

 

OK,今天的介绍就到这里,下次继续介绍第二种创建动画的方法。

C#运用WPF实现游戏动画制作 从QXGame(WPF GAME ENGINE)游戏引擎公布以来,受到很多朋友的热切关注,于是乎有了写教程的想法。那么从今天开始,我将带领大家一步一步的学会如何使用纯C#开发WPF/Silverlight游戏引擎,过程我会尽量的开源,并对相关小技巧进行解释和介绍,比较复杂的算法原理我会给大家一条绝对可行的思路,这里只想客观的告诉读者下面两点: 一、WPF开发的是桌面应用程序,自包括Vista在内以后的Windows系列操作系统均大量以之为主流图形工具,即将全面取代Winform,并且Windows 7将集成.NET3.5+框架,在当今Windows系列操作系统占据90%同类市场的现状下,这意味着什么呢? 二、Silverlight基于一个约4M左右的MINI型.NET框架,目前版本2.0,3.0的beta英文版,从发展趋势看是绝对有与Flash抗衡并且在未来超越它的可能性。Silverlight的优势更表现在它可以用一切.NET语言例如C#,VB.NET,C++.NET等开发,拓展度与可以参与开发的人群远远高于只能用AS开发的FLASH。 转入正题,网上已经有很多关于如何创建WPF/Silverlight动画的教程,但是均为使用Blend工具制作,或直接写在xaml代码内的动画,这样往往造成很多朋友误以为其实WPF/Silverlight不就是MS的Flash?诚然,如果您真的像那些教程里说的去开发WPF/Silverlight程序,我个人觉得一点意义都没有。这样开发出来的东西根本就超越不了Flash,那何苦还要投入如此多的精力来学习它? 所以本系列教程将全方位的以纯C#程序语言进行动态创建一切可视化对象,从而构建出一个如QXGame(WPF GAME ENGINE)游戏引擎,这才是我本系列教程希望达到的目的。 (注:本教程使用的开发工具为Visual studio 2008 版本sp1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值