检查鼠标是否在游戏窗口内

时间:2011-08-24 09:34:49

标签: .net xna

我正在使用XNA来显示窗口中的3D场景(=不是全屏)。用户可以单击并拖动鼠标来移动相机:

Public Sub New()
    ...
    Me.IsMouseVisible = True
    Me.Window.AllowUserResizing = True
    ...
End Sub

Protected Overrides Sub Update(ByVal gameTime As Microsoft.Xna.Framework.GameTime)
    Dim m = Mouse.GetState()

    ' Change camera position based on m
    ...
End Sub

这很有效。问题是,当游戏窗口中的鼠标时,这甚至可以工作,这看起来有点奇怪(我在Outlook中移动邮件,而另一个窗口中的3D场景开始转动)。

我没有找到Mouse.IsInsideGameWindow()属性。还有什么我可以(轻松地)做到这一点来避免这种情况吗?

1 个答案:

答案 0 :(得分:8)

bool IsMouseInsideWindow()
{
    MouseState ms = Mouse.GetState();
    Point pos = new Point(ms.X, ms.Y);
    return GraphicsDevice.Viewport.Bounds.Contains(pos);
}