【发布时间】:2014-12-07 01:15:21
【问题描述】:
当我使用form.DesktopLocation(new Point(X, Y); 设置我的游戏窗口的位置时,它可以工作,但是 XNA 会自动将它重置到屏幕的中心。我尝试谷歌搜索并查看堆栈溢出,但我似乎无法弄清楚如何防止它居中。有什么想法吗?
这是我操作 GraphicsDevice、GraphicsDeviceManager 和控制游戏的 Form 的代码:
// 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 仍然控制窗口位置,因为在它不调用绘图事件的帧上,它仍然将其更新到中心本身。
-
不应该这样,能不能把你的更新方法贴出来?
-
我的 update 方法中实际上没有任何内容,但我会发布 draw 方法中发生的情况,给我几分钟时间将其编辑到帖子中。