如何在Monogame中设置固定窗口大小?

9

我正在制作一个简单的游戏作为最终项目。它将在窗口中显示一个 .bmp 帧,而我没有意图在游戏运行时调整窗口大小,因此我想固定窗口的大小。问题是当我在 Visual Studio 2012 中选择 MonoGame 游戏创建项目后运行它时,它会以全屏模式启动。我尝试使用以下代码解决这个问题:

_graphics.IsFullScreen = false;
_graphics.PreferredBackBufferWidth = 640;
_graphics.PreferredBackBufferHeight = 480;
_graphics.Applychanges();

我已经将它放在主游戏类的构造函数和初始化函数中,但它没有任何作用。我正在使用Monogame 3.0。


这似乎是MonoGame中的一个bug。我相当确定你发布的代码应该可以工作。我在这里找到了这个讨论https://github.com/mono/MonoGame/issues/1762,作为一个肮脏的解决方法,你可以在上面的代码之前调用_graphics.CreateDevice()。 - craftworkgames
1
感谢您的帮助,但我仍无法设置固定窗口大小,但全屏模式的分辨率已更改,这是在Visual Studio 2012中。我在Visual Studio 2010中测试了相同的代码,它可以完美运行,但由于我对Monogame不熟悉且在编程方面是一个新手,所以我不知道到底出了什么问题。这一次我会使用VS 2010 。 - Mario Gil
2个回答

5
尝试将其放在Initialize方法中,而不是构造函数中。
应该可以解决问题:
protected override void Initialize()
{
    _graphics.IsFullScreen = false;
    _graphics.PreferredBackBufferWidth = 640;
    _graphics.PreferredBackBufferHeight = 480;
    _graphics.Applychanges();

    base.Initialize();
}

1
最好的调整窗口大小的方法是使用“GraphicsDeviceManager”。按照以下方式设置图形:
private GraphicsDeviceManager _graphics;

然后将您的代码编写到初始化方法中(注意大写字母):
 protected override void Initialize()
    {
        _graphics.PreferredBackBufferWidth = 640;
        _graphics.PreferredBackBufferHeight = 480;
        _graphics.ApplyChanges();

        base.Initialize();
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接