平石城际快线时刻表:在winform中写Xna游戏
来源:百度文库 编辑:偶看新闻 时间:2024/05/06 08:51:15
步骤如下:1、在XNA项目中添加一个winform窗体,命名为FormXna;2、在Windows窗体中增加一个Panel这个假定Panel名为panelXna。 在FormXna中添加命名空间:using Microsoft.Xna.Framework;3、在FormXna代码中写如下代码:public IntPtr getDrawSurface() //获取panelXna的句柄
{ return panelXna.Handle;}4、为了不使显示变形我们还需要在FormXna代码中写入下方法:public Vector2 getDrawSize() //获取绘制尺寸{ return new Vector2(panelXna.Width,panelXna.Height);}
5、现在我们回到MainGame中,添加如下两个变量:private IntPtr drawSurface;private Vector2 drawSize;
6、然后,我们需要更改一下MainGame的构造函数的输入参数,更改后代码如下:public MainGame(IntPtr drawSurface,Vector2 size)
在该构造中添加如下代码:this.drawSurface = drawSurface;this.drawSize = size;graphics.PreparingDeviceSettings += new EventHandler(graphics_PreparingDeviceSettings);System.Windows.Forms.Control.FromHandle((this.Window.Handle)).VisibleChanged += new EventHandler(MainGame_VisibleChanged);
7、好了,我们已经将drawSurface和drawSize赋值。但是,很显然没有graphics_PreparingDeviceSettings以及MainGame_VisibleChanged这两个处理事件的方法,所以我们要进行添加:void graphics_PreparingDeviceSettings(object sender,PreparingDeviceSettingsEventArgs e){//设置控制句柄e.GraphicsDeviceInformation.PresentationParameters.DeviceWindowHandle = drawSurface;
//设置宽度e.GraphicsDeviceInformation.PresentationParameters.BackBufferWidth = (int)drawSize.X;
//设置高度e.GraphicsDeviceInformation.PresentationParameters.BackBufferHeight = (int)drawSize.Y;} private void MainGame_VisibleChanged(object sender, EventArgs e){ if (System.Windows.Forms.Control.FromHandle((this.Window.Handle)).Visible == true) System.Windows.Forms.Control.FromHandle((this.Window.Handle)).Visible = false;}8、但是呢,现在运行只会出错。我们还需要在Program类中将Main入口进行更改://不加此句亦可运行,但是必须在没有ActiveX控件的情况下[STAThread]static void Main(string[] args){ FormXna form = new FormXna(); form.Show(); MainGame game = new MainGame(form.getDrawSurface(), form.getDrawSize()); game.Run();}
{ return panelXna.Handle;}4、为了不使显示变形我们还需要在FormXna代码中写入下方法:public Vector2 getDrawSize() //获取绘制尺寸{ return new Vector2(panelXna.Width,panelXna.Height);}
5、现在我们回到MainGame中,添加如下两个变量:private IntPtr drawSurface;private Vector2 drawSize;
6、然后,我们需要更改一下MainGame的构造函数的输入参数,更改后代码如下:public MainGame(IntPtr drawSurface,Vector2 size)
在该构造中添加如下代码:this.drawSurface = drawSurface;this.drawSize = size;graphics.PreparingDeviceSettings += new EventHandler
7、好了,我们已经将drawSurface和drawSize赋值。但是,很显然没有graphics_PreparingDeviceSettings以及MainGame_VisibleChanged这两个处理事件的方法,所以我们要进行添加:void graphics_PreparingDeviceSettings(object sender,PreparingDeviceSettingsEventArgs e){//设置控制句柄e.GraphicsDeviceInformation.PresentationParameters.DeviceWindowHandle = drawSurface;
//设置宽度e.GraphicsDeviceInformation.PresentationParameters.BackBufferWidth = (int)drawSize.X;
//设置高度e.GraphicsDeviceInformation.PresentationParameters.BackBufferHeight = (int)drawSize.Y;} private void MainGame_VisibleChanged(object sender, EventArgs e){ if (System.Windows.Forms.Control.FromHandle((this.Window.Handle)).Visible == true) System.Windows.Forms.Control.FromHandle((this.Window.Handle)).Visible = false;}8、但是呢,现在运行只会出错。我们还需要在Program类中将Main入口进行更改://不加此句亦可运行,但是必须在没有ActiveX控件的情况下[STAThread]static void Main(string[] args){ FormXna form = new FormXna(); form.Show(); MainGame game = new MainGame(form.getDrawSurface(), form.getDrawSize()); game.Run();}
在WinForm中如何使用MD5加密阿,谢谢
在WinForm中如何使用MD5加密阿,谢谢
DataGrid在WinForm中的使用
在VB.NET中对WINFORM开发,怎样实现对IE浏览器的刷新
winform中,如何添加button列?
winform中,form.show的问题
.net中关于winform拖放的问题
请教winform中icon的问题
询问有关WinForm中DataGrid的用法
winform 中,怎样从数据库里读出数据,并且在IE中显示?(vb.net)请各位高手帮忙!!!
如何在c# winform中动态向指定access中添加表,我用的是vs2003
请问在魔兽游戏中如何写中文名啊
winform中,datagrid 列头文字如何换行?
.net 中winform窗口之间的调用的问题
vb.net中winform的combobox联动问题
Winform中DataGrid控件的删除数据?请求帮助
winform中如何防止密码框中的星号给破解?
在绵阳学习 JAVA,C#,.NET,WinForm,sql
我在用visual studio 2005开发winform时
WinForm开发中如何把帮助文档嵌入到程序中?
游戏中写的配置问题
在游戏中截图!
在问道游戏中
vb 急求如何实现窗体中对winform组件的绑定