码迷,mamicode.com
首页 > Windows程序 > 详细

c# wpf 游戏笔记 画布实例

时间:2016-03-30 23:51:04      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

《c#  wpf  游戏笔记一  画布实例DispatcherTimer》

 

Rectangle rect; //创建一个方块作为演示对象

rect = new Rectangle();

rect.Fill = new SolidColorBrush(Colors.Red); //设置画布canvas的背景设

rect.Width = 50;

rect.Height = 50;

rect.RadiusX = 5;

rect.RadiusY = 5;//图像的一个50*50象素 圆角5*5红色的方块对象

canvas1.Children.Add(rect);

Canvas.SetLeft(rect, 50);

Canvas.SetTop(rect, 50);


private void 窗体名_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{

}
//鼠标点击事件


Point p = e.GetPosition(canvas1);

Storyboard storyboard = new Storyboard();//创建移动动画

//创建X轴方向动画
DoubleAnimation doubleAnimation = new DoubleAnimation(

Canvas.GetLeft(rect),

p.X, //p.X 为x坐标 p.Y 为Y坐标

new Duration(TimeSpan.FromMilliseconds(500))

);

Storyboard.SetTarget(doubleAnimation, rect);
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Left)"));//当为p.Y Canvas.Top 当为p.x Canvas.Left
storyboard.Children.Add(doubleAnimation);

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

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

Resources.Add("rectAnimation", storyboard);

}

//动画播放

storyboard.Begin();

《c#  wpf  游戏笔记二  画布实例Storyboard》

double speed = 1; //设置移动速度

Point moveTo; //设置移动目标


CompositionTarget.Rendering += new EventHandler(Timer_Tick); 线程

private void Timer_Tick(object sender, EventArgs e) {

double rect_X = Canvas.GetLeft(rect);

double rect_Y = Canvas.GetTop(rect);

Canvas.SetLeft(rect, rect_X + (rect_X < moveTo.X ? speed : -speed));

Canvas.SetTop(rect, rect_Y + (rect_Y < moveTo.Y ? speed : -speed));

}

首先获取方块的X,Y位置,接下让方块的X,Y与moveTo的X,Y进行比较而判断是+speed还是-speed

 

《c#  wpf  游戏笔记三  画布实例 CompositionTarget》

//定义线程

DispatcherTimer dispatcherTimer = new DispatcherTimer(DispatcherPriority.Normal);

dispatcherTimer.Tick += new EventHandler(Timer_Tick);

dispatcherTimer.Interval = TimeSpan.FromMilliseconds(50); //重复间隔

dispatcherTimer.Start(); 开始线程

第一句申明一个界面计时器DispatcherTimer ,并且设置其线程优先级别为Normal,这是标准设置,你可以根据你自己的需求进行更改,一共10个级别。

第二句注册Tick 事件,也就是计时器间隔触发的事件。

第三句设置Tick 事件的间隔,可以有很多方式,我使用的是TimeSpan.FromMilliseconds(),即间隔单位为毫秒。

第四句启动线程。

 

c# wpf 游戏笔记 画布实例

标签:

原文地址:http://www.cnblogs.com/namepass/p/5339260.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!