MonoGame 最大化 window 事件

MonoGame Maximize window event

我在尝试使用 monogame 和 c# 实现事件时遇到了问题。当前,当我的 window 调整大小时,我会调用一个事件:

        this.Window.ClientSizeChanged += new EventHandler<EventArgs>(Window_ClientSizeChanged);

        void Window_ClientSizeChanged(object sender, EventArgs e)
        {
            int width = Window.ClientBounds.Width;
            int height = Window.ClientBounds.Height;
            if (width > 0 && height > 0)
            {
                graphics.PreferredBackBufferWidth = width;
                graphics.PreferredBackBufferHeight = height;
                graphics.ApplyChanges();
             }
        }

一切正常,可以正确调整 window 的大小并更新 width/height。但是,如果通过用户单击 window 框架上的 maximize/minimize 按钮调整我的 window 的大小,则不会触发它。

在花了一些时间研究一些解决方案后,实现最大化事件的唯一建议来自 here

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

然而,这是一个我不是特别喜欢的解决方案,因为它依赖于包含 System.Windows.Forms 并且因为有一天我可能想为其他平台构建 id而不是包含任何特定的 windows 库。

是否有任何单一游戏功能可以处理每个平台的 maximize/minimize 事件调用,或者是否由最终用户来实现此类功能?

我也遇到过这个问题,但在 MonoGame API 中没有找到任何 'built in' 解决方案 API。

我想出的解决方案是在每帧开始时检查 Window.ClientBounds 的宽度和高度是否发生了变化。
它检测所有 window 调整大小类似于 Window.ClientSizeChanged 事件,但也检测 maximizing/restoring 和 window.

所做的调整大小