【问题标题】:Lagg fix BufferedImage滞后修复 BufferedImage
【发布时间】:2013-08-07 12:53:50
【问题描述】:

是否有另一个图像变量然后缓冲图像,因为当我启动从文本文档读取地图的应用程序时,它滞后很多

我的 BufferedImage 代码(对不起,我不是英语):

for(int i = 0; i < pole[0].length; i++)
    {
        for(int j = 0; j < pole.length; j++)
        {
            if(pole[j][i] == 1)
            {
                g.setColor(Color.RED);
                try {
                    //  g.fillRect(j*40, i*40, 40, 40);
                      wall = ImageIO.read(ClassLoader.getSystemResource("Images/wall.gif"));
                      g.drawImage(wall, j*40, i*40, null);
                } catch (IOException ex) {
                    JOptionPane.showMessageDialog(null, "Error: "+ex.getMessage());
                }
            }
        }
    }

【问题讨论】:

    标签: java image buffered


    【解决方案1】:

    您加载图像 i*j 次,而您只需要加载一次,然后对每个图块使用相同的引用。

    Image wall = ImageIO.read("...");
    for(int i=0;i < ...)
       for(int j=0;j < ...)
          g.drawImage(i*40, j*40, wall);
    

    你不应该在不属于那里的循环中做事情,你绝对不想在循环中做 IO。而且您绝对不希望每次在循环中都加载完全相同的图片,因为它不会在加载之间发生变化。

    【讨论】:

    • 另外,看起来图像是在paint方法中读取的,这是你不应该做的事情(但这当然是推测)......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 2020-07-12
    • 2017-04-27
    • 1970-01-01
    相关资源
    最近更新 更多