繁体   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