如何在XNA中查找窗口大小


10

我只是想知道是否有一种方法可以找出XNA中的窗口大小。我不想将其设置为特定大小;我想知道它当前自动显示为什么尺寸。有没有办法找到这些信息?

我意识到我可能应该在进行游戏之前就已经找到了这些信息(或自己手动设置了这些信息),但是我是一个新手,现在希望在我已经投入的范围内工作。谢谢!

Answers:


15

这是您的选择:

要获取后缓冲区大小,请使用:

GraphicsDevice.PresentationParameters.Bounds(用于矩形)或BackBufferWidthBackBufferHeight

如果要执行诸如设置视口,截屏等操作,则需要后备缓冲区大小。

要获取Viewport,请使用:

GraphicsDevice.Viewport.Bounds(用于矩形)或WidthHeight

视口的大小是您实际渲染东西时要使用的大小SpriteBatch就视口而言,传递给它的所有坐标都在像素对齐的客户端空间中:(0,0)表示左上像素,(width-1,height-1)表示右下像素。如果您要进行3D操作,则投影空间将从视口左下方的(-1,-1)变为右上方的(1,1)。

您可以调整视口在屏幕上的大小和位置(用于执行分屏显示等效果)。因此,尽管将其初始化为后缓冲区的大小,但不一定总是相同。

如果您正在做界面布局工作,特别是如果您要在Xbox 360上运行,请注意Viewport.TitleSafeArea。这告诉您在屏幕上肯定可以看到哪些区域,从而可能会切掉某些边框。

如果出于某种原因您实际上是在使用游戏窗口本身,请使用Game.GameWindow.ClientBounds


非常感谢!我应该指定这是一个2D游戏,但是您很高兴给出两个答案。立即阅读视口。
Nick Van Hoogenstyn

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.