[英]Embeding a XNA Game in a Windows Form User Control
我有一個簡單的XNA 4.0游戲。 我想制作一個Windows窗體用戶控件來渲染這個游戲,並提供必要的交互反饋(鍵盤和鼠標)回XNA。
我嘗試過以下方法:
在XNA中:
將XNA的Game.GraphicsDevice重定向到RenderTarget2D。
發送一個事件,發送一個具有KeyboardState和MouseState的對象,由Windows Forms填寫,在Update()的開頭
在WinForms中:
捕獲事件,使用Windows窗體中常用的鍵盤和鼠標事件獲取的數據填充KeyboardState和MouseState。
在OnPaint上,調用Game.RunOnFrame()
從游戲中獲取RenderTarget2D(作為紋理)。
鎖定紋理的數據,並嘗試在我的用戶控件的圖形中逐個像素地繪制它。
另一個想法是調用Game.Run()(新的線程)並在游戲中發送一個發送RenderTarget2D的事件。
我發現了以下問題:
如果我調用Game.Run()我無法隱藏游戲的窗口(顯示為黑色,因為我正在重定向渲染)
Game.Run()必須在不同的線程上調用,因為它啟動一個新的事件循環(它調用Application方法),然后我在我的用戶控件中繪制它創建的不同線程(壞,壞)
使用Color,Vector4甚至Rgba32鎖定RenderTarget2D似乎對我不起作用(它表示“錯誤的結構大小”)
有任何想法嗎?
提前致謝。
在xna的網站上有一個很好的代碼示例,關於在winform中嵌入xna。 它將指導您完成所有步驟。 我為xbox制作游戲,但我將它用於我們為引擎制作的關卡編輯器。
http://xbox.create.msdn.com/en-US/education/catalog/sample/winforms_series_1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.