簡體   English   中英

在Windows窗體用戶控件中嵌入XNA游戲

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM