我正在 Visual Studio C# 2010 Express 中制作 XNA 4.0 游戏。在游戏中,我将 winForm 用于用户可以更改的某些属性。我希望 winForm 窗口恰好出现在 xna 主游戏窗口的右侧(为了清晰和更好的界面)。我的问题是,我怎样才能得到 xna 游戏窗口的坐标?如何更改 winForm 窗口的坐标,使该窗口恰好出现在主游戏窗口的右侧?
问问题
1555 次
2 回答
3
用这个:
using wf = System.Windows.Forms;
wf.Form MyGameForm = (wf.Form)wf.Form.FromHandle(Window.Handle);
var bounds = MyGameForm.Bounds;
bounds
将是一个System.Drawing.Rectangle
,您可以访问它的 X、Y、宽度和高度。
于 2013-01-26T21:04:27.530 回答
0
在设置新位置之前,您需要将 StartPosition 属性设置为 FormStartPosition.Manual...
这是一个详细的示例:
var sc = System.Windows.Forms.Screen.AllScreens;
var xnaForm = (Form) Forms.Control.FromHandle( Editor.Game.Window.Handle );
// Set the xnaForm position at the desired screen (for multimonitor systems)
xnaForm.StartPosition = Forms.FormStartPosition.Manual;
xnaForm.Location = new Point(
sc[pref.AdapterIndex].Bounds.Left,
sc[pref.AdapterIndex].Bounds.Top);
int W = sc[pref.AdapterIndex].WorkingArea.Width;
int H = sc[pref.AdapterIndex].WorkingArea.Height;
W -= Editor.Game.Window.ClientBounds.Width;
// Set the editor form position to the right of xnaForm
MapForm.StartPosition = Forms.FormStartPosition.Manual;
MapForm.DesktopLocation = new System.Drawing.Point(
xnaForm.DesktopBounds.Right,
xnaForm.DesktopBounds.Top);
MapForm.Width = W;
于 2013-01-27T14:44:38.763 回答