重绘图像的最有效方法

时间:2014-03-24 13:10:47

标签: c# gdi+

我正在做一个非常简单的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);
}

1 个答案:

答案 0 :(得分:3)

每次调用.FromFile()时,您都会将文件从硬盘加载到内存中。在实例化时将图像存储在Ground类中(或者无论何时,只是在Draw()中调用它时),这应该是固定的。