如何在XNA中最大化窗口

本文关键字:最大化 窗口 XNA | 更新日期: 2024-09-24 22:33:37

这应该是一个非常简单的问题,但经过大量搜索,似乎没有任何可用的例子。我只想让我的XNA窗口一开始就最大化。我知道如何设置窗户的宽度和高度,但那不太一样。我还需要在不使用全屏的情况下完成此操作。我只想要一个正常的最大化窗口。

如何在XNA中最大化窗口

将图形设备管理器的IsFullScreen属性设置为true。

http://msdn.microsoft.com/en-us/library/bb195024(v=xnagamestudio.10).aspx

    //from the above msdn sample
    graphics = new GraphicsDeviceManager( this );
    content = new ContentManager( Services );
    graphics.PreferredBackBufferWidth = 800;
    graphics.PreferredBackBufferHeight = 600;
    graphics.PreferMultiSampling = false;
    graphics.IsFullScreen = true;

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphicsdevicemanager.isfullscreen(v=xnagamestudio.10).aspx

@Cyral有迄今为止最接近的答案,但它仍然不是你想要的。要最大化Windows窗体,请使用WindowState属性:

var form = (Form)Form.FromHandle(Window.Handle);
form.WindowState = FormWindowState.Maximized;

您可以添加对System.Windows.Forms和System.Drawing的引用(但是,由于歧义,您需要键入名称空间)

在基数后使用以下代码。初始化

Form form = (Form)Form.FromHandle(Window.Handle);
form.Location = Point(0, 0);
form.Size = Screen.PrimaryScreen.WorkingArea.Size;

其他人已经介绍了自动最大化的步骤,但要启用实际的最大化按钮,以便用户可以在需要时执行,请在游戏构造函数中执行此操作:

Window.AllowUserResizing = true; 

根据您希望游戏在调整大小开始和结束时的行为,可能需要暂停游戏,您可能需要处理其中一些事件。

    Form form = (Form)Form.FromHandle(Window.Handle);
    form.ResizeBegin += new EventHandler(form_ResizeBegin);
    form.ResizeEnd += new EventHandler(form_ResizeEnd);
    form.LocationChanged += new EventHandler(form_LocationChanged);
_graphics = new GraphicsDeviceManager(this);
DisplayMode displayMode = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode;
this._graphics.PreferredBackBufferFormat = displayMode.Format;
this._graphics.PreferredBackBufferWidth = (int)(displayMode.Width);
this._graphics.PreferredBackBufferHeight = (int)(displayMode.Height);

有点对我有效,但不完全有效,你一试就会明白。我的意思是,这并不完美,我相信还有更好的方法,但对于原型设计来说,这应该有效——或者通过一些调整,你可以得到你需要的。