WPF在XYZ上移动控件
使用WPF创建像NeoPets游戏这样的一些东西的时代已经来到,今天我对控件进行了改进,这里将展示如何为运行状态下的控件添加移动效果,可以使用鼠标和键盘来移动它们,从这里(该文件已经被删除掉了)下载源代码。
在xaml文件中添加按钮:
button keydown="OnKey" previewmousemove="OnMove" 在.cs文件中添加下面的方法:
public void OnMove(object o, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { b = (Button)o; SetZ(); Canvas.SetZIndex(b, 99); b.Margin = new Thickness(e.MouseDevice.GetPosition(null).X - b.Width / 2, e.MouseDevice.GetPosition(null).Y - b.Height/2, b.Margin.Right, b.Margin.Bottom); } } 这是使用键盘移动的代码:
public void OnKey(object o, KeyEventArgs e) { int delta = 20; b = (Button)o; SetZ(); Canvas.SetZIndex(b, 99); switch (e.Key) { case Key.W: b.Margin = new Thickness(b.Margin.Left, b.Margin.Top - delta, b.Margin.Right, b.Margin.Bottom); break; case Key.S: b.Margin = new Thickness(b.Margin.Left, b.Margin.Top + delta, b.Margin.Right, b.Margin.Bottom); break; case Key.A: b.Margin = new Thickness(b.Margin.Left - delta, b.Margin.Top, b.Margin.Right, b.Margin.Bottom); break; case Key.D: b.Margin = new Thickness(b.Margin.Left + delta, b.Margin.Top, b.Margin.Right, b.Margin.Bottom); break; default: break; } } 虽然很简单,但由于这方面的文档比较少,所以给我们带来了不少麻烦。我希望这篇文章对你有所帮助,并鼓励你去改进你的程序。
注:由于该作者Blog的链接已经失效了,所以程序中的SetZ()函数也无从得知其具体的代码了,如果有哪位保存了这份代码,请发给我一份,谢谢。 本文出自 51CTO.COM技术博客 |


public void OnMove(object o, MouseEventArgs e)
ddkangfu
博客统计信息
热门文章
最新评论
友情链接