2014-07-09 59 views
0

當我使用form.DesktopLocation(new Point(X, Y);設置我的遊戲窗口的位置時,它可以工作,但XNA會自動將其重置爲屏幕中心。我試着用google搜索堆棧溢出,但我似乎無法弄清楚如何防止它集中。有任何想法嗎?防止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(),有時會重新定位表單後的表單?

+0

你能澄清一下情況嗎?如果它起作用,它什麼時候被XNA重新定位? –

+0

在下一次更新開始時,它看起來像。 –

+0

我試着在每一幀重新設置位置,但是XNA仍然控制着窗口的位置,因爲在它沒有調用繪製事件的幀上,它仍然將它更新到中心本身。 –

回答

0

這個問題沒有解決辦法。

XNA自動復位上g.ApplyChanges窗口屏幕的中心的位置,並且每當它擊中另一個窗口相關的操作,諸如調整大小,或者從一個顯示器移動所述窗口到另一個。

這是XNA中的問題,而不是XNA代碼。 XNA編寫無法防止這種情況,因爲他們的重點是內容,而不是Windows。因此,如果您希望更好地控制表單,最好不要使用XNA,或者以您設置的形式使用XNA的輸出。