我正在做一个非常简单的2D游戏。不幸的是,当我添加图像时,我遇到了刷新率的问题。我在计时器刻度线上使用Invalidate,它可以正常工作,直到我将DrawRectangle
更改为DrawImage
。屏幕上只有27个对象Paint
刷新率平均从稳定的64降至39。我使用的图像只有2-3kb,所以它们不应该引起问题。请帮我理解这个。为什么以及如何发生?是什么原因和问题以及如何解决?
非常好:
foreach (Ground _en in game.blocks)
{
e.Graphics.FillRectangle(Brushes.Green,_en.rec);
}
导致帧丢失:
foreach (Ground _en in game.blocks)
{
e.Graphics.DrawImage(Image.FromFile(_en.background), _en.rec);
}
答案 0 :(得分:3)
每次调用.FromFile()时,您都会将文件从硬盘加载到内存中。在实例化时将图像存储在Ground类中(或者无论何时,只是在Draw()中调用它时),这应该是固定的。