注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 IB客座主编(四)美国西蒙公..
 帮助

WPF在XYZ上移动控件


2008-05-19 12:27:29
 标签:.net wpf   [推送到技术圈]

    使用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()函数也无从得知其具体的代码了,如果有哪位保存了这份代码,请发给我一份,谢谢。




    文章评论
 
 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: