【发布时间】:2017-07-28 00:21:25
【问题描述】:
我在尝试使用 monogame 和 c# 实现事件时遇到了麻烦。目前,当我调整窗口大小时,我会调用一个事件:
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();
}
}
这一切都很好,可以正确调整我的窗口大小并更新宽度/高度。但是,如果用户通过单击窗口框架上的最大化/最小化按钮来调整我的窗口大小,则不会触发它。
在花了一些时间研究一些解决方案之后,实现最大化事件的唯一建议来自here:
Form form = (Form)Control.FromHandle(Window.Handle);
form.WindowState = FormWindowState.Maximized;
然而,这是一个我不是特别喜欢的解决方案,因为它依赖于 System.Windows.Forms 的包含,而且我可能有一天想为其他平台构建 id 而不是包含任何特定的窗口库。
是否有任何单一游戏功能可以处理每个平台的最大化/最小化事件调用,还是由最终用户来实现此类功能?
【问题讨论】:
-
通过 Mono 在多个平台上支持 Windows 窗体,具体取决于您要支持的平台,这甚至可能不是问题mono-project.com/docs/gui/winforms