2010-08-24 81 views
1

我想绑定一个XNA WinForms系统,这样我就可以拥有一个游戏编辑器,并且我需要为它使用鼠标。由于XNA鼠标输入类根据窗口位置报告鼠标位置,因此我需要将我在相同位置的窗体放置。我怎样才能得到我的XNA游戏使用的窗口的位置?Xna - 获取窗口位置?

回答

4

我结束了这段代码做:

 Form gameWindowForm = (Form)Form.FromHandle(this.Window.Handle); 
     ... 
     myForm.Location = new System.Drawing.Point(gameWindowForm.Location.X - 5,gameWindowForm.Location.Y - 5); //-5 pixels for adjustment 

其工作只是花花公子!

+0

啊,所以给你一个参考的实际形式...很高兴知道! – bcat 2010-08-24 01:00:15

+0

我其实从http://www.codeproject.com/KB/game/XNA_And_Beyond.aspx得到了第一行。对于如何获得使用XNA的Windows窗体设置非常有帮助,虽然不完整。 – RCIX 2010-08-24 01:04:09

+1

-5将基于正在使用的窗口样式而改变?所以它在经典造型,Xp造型和vista/7造型中都无法正常工作 – McKay 2010-08-24 15:40:40

1

XYGame.Window.ClientBounds结构的属性应该给你你正在寻找的绝对窗口坐标。

+0

*几乎*这样做,但它给了我窗口内容的左上部分的位置,而不是实际的窗口位置。看到我的答案,我是如何做到的。 – RCIX 2010-08-24 00:51:39

0

我用我的关卡编辑器也遇到过这个问题。我有一个PictureBox在我的Windows窗体,所以我需要的唯一事情初始化XNA游戏时到:

Mouse.WindowHandle = this.windowForm.Viewport.Handle; 

其中Viewport是PictureBox的

现在XNA鼠标位置是否正确自动调整。