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.
所做的调整大小
我在尝试使用 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.