【问题标题】:Xna - get window location?Xna - 获取窗口位置?
【发布时间】:2010-08-24 00:24:17
【问题描述】:

我正在尝试安装一个 XNA WinForms 系统,以便拥有一个游戏编辑器,我需要使用鼠标来完成它。由于 XNA 鼠标输入类根据窗口位置报告鼠标位置,因此我需要将我拥有的表单放在同一个位置。如何获取我的 XNA 游戏使用的窗口的位置?

【问题讨论】:

    标签: .net winforms xna window location


    【解决方案1】:

    我最终用这段代码做到了:

            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
    

    效果很好!

    【讨论】:

    • 啊,这样你就可以参考实际的表格了……很高兴知道!
    • 我实际上从codeproject.com/KB/game/XNA_And_Beyond.aspx 得到了第一行。对于如何设置 Windows 窗体以使用 XNA 非常有帮助,但并不完整。
    • -5 会根据使用的窗口样式而改变?所以它在经典样式、Xp 样式和 vista/7 样式中都不能正常工作
    • @McKay:是的,但因为我将它用作内部工具,所以这不是问题。如果有人打算使用它来发布使用这种技术的工具,那么您应该根据窗口类型进行某种切换。
    【解决方案2】:

    Game.Window.ClientBounds 结构的XY 属性应该为您提供您正在寻找的绝对窗口坐标。

    【讨论】:

    • 几乎 做到了,但它给了我窗口内容的最左上部分的位置,而不是实际的窗口位置。请参阅我的答案以了解我是如何做到的。
    【解决方案3】:

    我的关卡编辑器也遇到了这个问题。我的 Windows 窗体中有一个图片框,所以在初始化 XNA 游戏时我唯一需要做的就是:

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

    Viewport 是图片框

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

    【讨论】:

      猜你喜欢
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多