Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 检查鼠标是否在游戏窗口内_.net_Xna - Fatal编程技术网

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

.net 检查鼠标是否在游戏窗口内,.net,xna,.net,Xna,我使用XNA在窗口中可视化3D场景(=非全屏)。用户可以单击并拖动鼠标来移动相机: Public Sub New() ... Me.IsMouseVisible=真 Me.Window.AllowUserResizing=真 ... 端接头 受保护的覆盖子更新(ByVal gameTime作为Microsoft.Xna.Framework.gameTime) Dim m=Mouse.GetState() '根据m更改相机位置 ... 端接头 这很有效。问题是,当鼠标不在游戏窗口内时,这甚至起作

我使用XNA在窗口中可视化3D场景(=非全屏)。用户可以单击并拖动鼠标来移动相机:

Public Sub New()
...
Me.IsMouseVisible=真
Me.Window.AllowUserResizing=真
...
端接头
受保护的覆盖子更新(ByVal gameTime作为Microsoft.Xna.Framework.gameTime)
Dim m=Mouse.GetState()
'根据m更改相机位置
...
端接头
这很有效。问题是,当鼠标不在游戏窗口内时,这甚至起作用,这看起来有点奇怪(我在Outlook中移动邮件,另一个窗口中的3D场景开始转动)


我没有找到
鼠标。IsInsideGameWindow()
属性。还有什么可以(轻松)避免的吗?

您甚至可以将其作为MouseState对象的扩展,如下所示:
bool IsInsideGameWindow(此MouseState状态){Point pos=new Point(state.X,state.Y);return GraphicsDevice.Viewport.Bounds.Contains(pos);}
。但不知道如何翻译到VB.NET。谢谢!因为XNA 3.1还没有
Viewport.Bounds
,所以我已经解决了
Return ms.X>=0和also ms.Y>=0和also ms.X的问题,我相信这就是XNA的一般情况。@Downvoter:我们非常感谢改进问题的反馈。
bool IsMouseInsideWindow()
{
    MouseState ms = Mouse.GetState();
    Point pos = new Point(ms.X, ms.Y);
    return GraphicsDevice.Viewport.Bounds.Contains(pos);
}