【问题标题】:Prevent Window Centering in XNA防止 XNA 中的窗口居中
【发布时间】: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 方法中发生的情况,给我几分钟时间将其编辑到帖子中。

标签: c# xna window centering


【解决方案1】:

这个问题没有解决办法。

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

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

【讨论】:

    猜你喜欢
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2014-04-13
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多