簡體   English   中英

在Visual Basic .NET中為視頻游戲繪制圖形的最佳方法是什么?

[英]What's the best way to draw graphics for a video game in Visual Basic .NET?

我知道VB.NET對視頻游戲不利,但是我會在接下來的一段時間內堅持使用它,因為這是我的高中計算機科學課程所使用的。

我知道有很多方法可以在Visual Basic中繪制圖形。 我聽說過使用Me.CreateGraphics ,使用onPaint事件處理程序以及使用后台緩沖區(盡管我不確定使用這些方法的最佳方法是什么)。 順便說一下,我最感興趣的是創建簡單的2D游戲。 另外,它需要使用默認的VB.NET庫制作,因此我無法安裝XNA或類似的東西。

對於簡單的游戲,GDI +( CreateGraphics方式)可以。 將一個圖片框添加到您的窗體。 此Picturebox將顯示每個渲染的幀。 但是,您不會直接在其上繪制,而是在另一張圖像或后緩沖上繪制。 基本上,您將創建一個游戲循環。 在這里,您可以處理用戶輸入,執行游戲邏輯並渲染新框架:

Sub GameLoop()
  Do
    HandeUserInput() 'Handles keys or mouse movement
    PerformGameLogic() 'Move NPCs, etc.
    RenderNewFrame() 'Redraw the new state of the game
  Loop
End Sub

用戶輸入和游戲邏輯由您決定。 渲染將通過創建所需大小的新位圖來完成,然后使用GDI +圖形對象在其上繪制內容。 完成后,您將在圖片框中顯示此新位圖。

Sub RenderNewFrame()
  Dim NewFrame as New Bitmap(640, 480) 'Or whatever resolution you want
  Using g as Graphics = Graphics.FromImage(NewFrame)
    DrawWorld(g)
    DrawPlayer(g)
  End Using
  If Picturebox1.Image IsNot Nothing Then Picturebox1.Image.Dispose()
  Picturebox1.Image = NewFrame
End Sub

我處理前一幀,因為位圖不受管理,並且會迅速堆積在內存中。

這是游戲的基本框架,在帶有GDI +的VB.NET中可以很好地工作。 您可能希望在每幀之間添加小的延遲,即1..2毫秒。 這將防止很多處理器負載,同時不會真正影響游戲性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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