防止XNA中的窗口居中

本文关键字:窗口 防止 XNA | 更新日期: 2023-09-27 18:12:07

当我使用form.DesktopLocation(new Point(X, Y);设置游戏窗口的位置时,它是有效的,但是XNA会自动将其重置到屏幕中央。我试着用谷歌搜索堆栈溢出,但我似乎不知道如何防止它集中。什么好主意吗?

这是我的代码操纵GraphicsDevice, GraphicsDeviceManager,和窗体控制游戏:

// in the initialiser
window = (Form)Form.FromHandle(Window.Handle);
GraphicsDeviceManager = new GraphicsDeviceManager(this);
// in the draw method
g.PreferredBackBufferWidth = Width;
g.PreferredBackBufferHeight = Height;
g.ApplyChanges();
f.DesktopLocation = new System.Drawing.Point(X, Y);

这就是一切。在g.ApplyChanges()之前和之后,我尝试设置桌面位置每帧不止一次,这并没有改变任何东西。

然而,刚才,我试着去除g.ApplyChanges(),它不再做了。奇数。为什么在改变表单之前运行g.ApplyChanges()只是有时在我定位表单后重新中心表单?

防止XNA中的窗口居中

这个问题没有答案

XNA自动将窗口的位置重置到g.ApplyChanges屏幕的中心,每当它遇到另一个与窗口相关的操作时,例如调整大小,或将窗口从一个监视器移动到另一个。

这是XNA的问题,而不是XNA代码的问题。 XNA在编写时没有办法防止这种情况,因为它们的重点是内容,而不是窗口。因此,如果您希望更好地控制表单,最好不要使用XNA,或者在您设置的表单中使用XNA的输出。