我运行了一个三显示器设置,我正在处理我决定的 MonoGame 中的图形演示(为什么不呢?让我们让它能够在所有显示器上最大化!)所以我使用了以下代码:
graphics.IsFullScreen = false;
graphics.ApplyChanges();
//get dimensions of box that will cover all displays and set window to it.
int xPos = System.Windows.Forms.Screen.AllScreens.OrderBy(x => x.Bounds.X).Select(x => x.Bounds.X).First();
int yPos = System.Windows.Forms.Screen.AllScreens.OrderBy(y => y.Bounds.Y).Select(y => y.Bounds.Y).First();
form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
form.Location = new System.Drawing.Point(xPos, yPos);
int xWidth = System.Windows.Forms.Screen.AllScreens.OrderByDescending(x => x.Bounds.X).Select(x => x.Bounds.X + x.Bounds.Width).First() - xPos;
int yHeight = System.Windows.Forms.Screen.AllScreens.OrderByDescending(y => y.Bounds.Y).Select(y => y.Bounds.Y + y.Bounds.Height).First() - yPos;
form.MaximumSize = new System.Drawing.Size(0, 0);
form.Width = xWidth;
form.Height = yHeight;
// graphics.PreferredBackBufferWidth = xWidth;
// graphics.PreferredBackBufferHeight = yHeight;
graphics.ApplyChanges();
Properties.Settings.Default.FakeFullScreen = true;
}
当然还有第二个功能来撤消它。
当我将其中一个监视器设置在其他监视器之上进行测试时,这工作正常,但是当我设置 Windows 布局以将它们全部并排放置(提供 5760x1080 的分辨率)时,我在图形上抛出了一个无效的参数错误。应用更改()。所以我注释掉了图形代码并手动设置了表单宽度,发现显然我不允许我的表单宽度超过 4096 像素。
有没有解决的办法?我对所有建议持开放态度,包括并排绘制多个窗口,但我需要一些代码来向我展示如何定位第二种形式。
谢谢,麻烦您了。