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

发布于 2024-12-01 01:20:40 字数 564 浏览 1 评论 0原文

我正在使用 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() 属性。我还能(轻松)做些什么来避免这种情况吗?

I'm using XNA to visualize a 3D scene in a window (= not full-screen). The user can click and drag the mouse to move the camera:

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

This works. The problem is that this even works when the mouse is not inside the game window, which looks a bit strange (I move a mail in Outlook and the 3D scene in the other window starts turning).

I didn't find a Mouse.IsInsideGameWindow() property. Is there anything else that I can (easily) do to avoid this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

む无字情书 2024-12-08 01:20:40
bool IsMouseInsideWindow()
{
    MouseState ms = Mouse.GetState();
    Point pos = new Point(ms.X, ms.Y);
    return GraphicsDevice.Viewport.Bounds.Contains(pos);
}
bool IsMouseInsideWindow()
{
    MouseState ms = Mouse.GetState();
    Point pos = new Point(ms.X, ms.Y);
    return GraphicsDevice.Viewport.Bounds.Contains(pos);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文