WPF游戏摘记--地图编辑器(3)

本文介绍了如何在WPF应用中利用Storyboard创建动画,并展示了如何将WinForm控件整合进WPF环境中。主要内容包括Storyboard的基本使用、动画完成判断、在WPF中添加WinForm控件的方法,以及实例代码演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

知识点一:storyboard创建动画

storyboard = new Storyboard();

            //创建X轴方向动画

            DoubleAnimation doubleAnimation = new DoubleAnimation(

              Canvas.GetLeft(Spirit),

              p.X,

              new Duration(TimeSpan.FromSeconds(1))

            );

            Storyboard.SetTarget(doubleAnimation, Spirit);

            Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Left)"));

            storyboard.Children.Add(doubleAnimation);

            //创建Y轴方向动画

            doubleAnimation = new DoubleAnimation(

              Canvas.GetTop(Spirit),

              p.Y,

              new Duration(TimeSpan.FromSeconds(1))

            );

            Storyboard.SetTarget(doubleAnimation, Spirit);

            Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)"));

            storyboard.Children.Add(doubleAnimation);

            //将动画动态加载进资源内

            if (!Resources.Contains("rectAnimation")) {

                Resources.Add("rectAnimation", storyboard);

            }

            //动画播放

            storyboard.Begin();

  1. 实例化一个DoubleAnimation,设置他指定的持续时间和从指定的初始值运动到目标值;
  2. 设置动画目标;
  3. 设置动画目标参数
  4. 动画开始

知识点二:动画完成判断

 storyboard.GetCurrentTime() == TimeSpan.FromSeconds(1)

这个应该和上一个一起看才是,原来就是给动画设置运动时间为1s,这里查看当前动画持续时间是否为1s。简单吧,还是那句话,有些东西懂了就很简单,不懂,就很难了。

知识点三:在WPF中的添加WinForm控件

1)  添加dll引用:需要引用WindowsFormsIntegrationl和System.Windows.Forms。

2)  如果是在xaml中使用,则需要添加类似如下的定义:

    xmlns:WinFormHost = "clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"

    xmlns:WinForm = "clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"

3)使用的时候通过一个WinFormHost包含一个WinForm控件的形式,以添加两个NumericUpDown为例,我们可以这样写:

<WinFormHost:WindowsFormsHost Canvas.Left="820" Canvas.Top="170" Height="20" Width="101">

        <WinForm:NumericUpDown x:Name="SectionWidth" Maximum="500" Minimum="100" Increment="10" Value="300" ValueChanged="SectionSize_ValueChanged" />

</WinFormHost:WindowsFormsHost>

<WinFormHost:WindowsFormsHost Canvas.Left="820" Canvas.Top="196" Height="20" Width="101">

        <WinForm:NumericUpDown x:Name="SectionHeight" Maximum="500" Minimum="100" Increment="10" Value="300" ValueChanged="SectionSize_ValueChanged" />

</WinFormHost:WindowsFormsHost>

 

转载于:https://www.cnblogs.com/haichao/archive/2012/07/19/2599894.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值