我有一個簡單的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