我目前正在开发一款游戏,我希望有一个带有背景图像的主菜单。
但是,我发现这种方法Graphics.DrawImage()
真的很慢。我做了一些测量。假设 MenuBackground 是我的资源图像,分辨率为 800 x 1200 像素。我会将它绘制到另一个 800 x 1200 位图上(我首先将所有内容渲染到缓冲区位图,然后缩放它,最后将其绘制到屏幕上 - 这就是我处理多个玩家分辨率的可能性的方式。但它不应该影响无论如何,请参阅下一段)。
所以我测量了以下代码:
Stopwatch SW = new Stopwatch();
SW.Start();
// First let's render background image into original-sized bitmap:
OriginalRenderGraphics.DrawImage(Properties.Resources.MenuBackground,
new Rectangle(0, 0, Globals.OriginalScreenWidth, Globals.OriginalScreenHeight));
SW.Stop();
System.Windows.Forms.MessageBox.Show(SW.ElapsedMilliseconds + " milliseconds");
结果出乎我的意料——Stopwatch
测量值介于40 - 50 milliseconds
. 而且由于背景图像不是唯一要绘制的东西,整个菜单需要大约 100 毫秒才能显示,这意味着可观察到的滞后。
我试图将它绘制到 Paint 事件给出的 Graphics 对象,但结果是30 - 40 milliseconds
- 没有太大变化。
那么,这是否意味着Graphics.DrawImage()
不能用于绘制更大的图像?如果是这样,我应该怎么做才能提高我的游戏性能?