代码之家  ›  专栏  ›  技术社区  ›  Vadims Samsinovs

重绘图像的最有效方法

  •  0
  • Vadims Samsinovs  · 技术社区  · 10 年前

    我正在制作一个非常简单的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 回复  |  直到 10 年前
        1
  •  3
  •   mongoosled    10 年前

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