我有一个简单的XNA 4.0游戏编写。我想创建一个Windows Form用户控件来渲染这个游戏,并将必要的交互反馈(键盘和鼠标)提供给XNA。在Windows窗体用户控件中嵌入XNA游戏
我曾尝试以下:
在XNA:
重定向XNA的Game.GraphicsDevice到RenderTarget2D。
发出事件发送带有KeyboardState和MouseState的目的是通过Windows窗体填写,在更新()
的开始的WinForms:
捕获事件,使用Windows窗体中通常的键盘和鼠标事件获取的数据填充KeyboardState和MouseState。
在OnPaint中,调用Game.RunOnFrame()
获取从游戏RenderTarget2D(如纹理)。
锁定纹理的数据,并尝试在我的用户控件的图形中逐像素地绘制它。
另一个想法是只是调用Game.Run()(一个新的线程),并在游戏中发送一个事件发送RenderTarget2D。
我发现了以下问题:
如果我叫Game.Run()我没有办法隐藏游戏窗口(这似乎黑色,因为我重定向渲染)
Game.Run()必须在不同的线程上调用,因为它启动了一个新的事件循环(它调用Application方法),然后我从用户控件中创建一个不同的线程(坏,坏)
锁定的色彩搭配,一个的Vector4 RenderTarget2D,甚至RGBA32似乎并不为我工作(它说:“错了结构尺寸”)
任何想法?
在此先感谢。
愚蠢的问题 - 你为什么要这么做? – RQDQ 2012-01-05 18:25:10
我认为本教程和代码示例完全涵盖了您想要执行的操作:http://create.msdn。com/en-US/education/catalog/sample/winforms_series_1 – 2012-01-05 18:57:51
@RQDQ我认为这是一篇不太深思熟虑的评论。我可以想出一个你可能希望在winform中嵌入xna游戏的原因:创建关卡编辑器。 – annonymously 2012-01-05 21:44:51