在Visual Basic .NET中为视频游戏绘制图形的最佳方法是什么?

时间:2014-04-17 22:48:00

标签: vb.net graphics

我知道VB.NET对视频游戏不利,但我在接下来的一段时间内仍然坚持使用它,因为这就是我的高中计算机科学课程所使用的。

我知道有很多方法可以在Visual Basic中绘制图形。我听说过使用Me.CreateGraphics,使用onPaint事件处理程序,并使用后台缓冲区(虽然我不确定使用这些方法的最佳方法)。顺便说一句,我最感兴趣的是创建简单的2D游戏。此外,它需要使用默认的VB.NET库,所以我无法安装XNA或类似的东西。

1 个答案:

答案 0 :(得分:1)

对于简单的游戏,GDI +(CreateGraphics方式)是可以的。 在表单中添加Picturebox。此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 ms。这样可以防止大部分处理器负载,同时不会影响游戏性能。