如何更快地将图像数组绘制到帧中?

时间:2017-02-02 23:00:59

标签: java performance frame draw

我有一个应用程序,在我的框架上一次显示10-50个图像,周围有框。我可以拖动图像并将它们放在数组中的新位置,框架将更新整个时间。我发这篇文章的原因是因为我的3440x1440显示器使这个程序滞后,我的旧1920x1080根本没有滞后。

这是一个显示我正在谈论的内容的gif: https://gfycat.com/InferiorFrenchArachnid

这是我的代码,用于将图像及其周围的框绘制到框架中:

public void paintComponent(Graphics g){
    super.paintComponent(g);
    if (model.getCarPath() == null){
        viewImage = createImage(1000,1000);
        viewGraphics = viewImage.getGraphics();
        viewGraphics.setColor(color);
        viewGraphics.fillRect(0, 0, 1000, 1000);
    }
try{

        if (model.getCarPath() != null){
            if(viewImage==null){
                viewImage = createImage(1000,1000);
                viewGraphics = viewImage.getGraphics();
            }
            viewGraphics.setColor(color);
            viewGraphics.fillRect(0, 0, 1000, 1000);

            viewGraphics.setColor(Color.blue);
            for (int i = 0; i < model.getPictureArray().size()-1; i++){
                //draw the images
                viewGraphics.drawImage(x,y,width,height, this);

            }
            // draws the selected picture over top of the rest
            viewGraphics.drawImage(model.getSelected().getImage(), (int)x,
                    (int)y, (int)width,
                    (int)height, this);

            if (model.doesLineExist() == true){ 
                // draws the line next to the pictures to show where the picture will be dropped 
                // when the mouse is released
                viewGraphics.fillRect((int)model.getLine().getX(), (int)model.getLine().getY(), 5,
                        (int)model.getLine().getHeight());
            }
        }
    } catch (Exception e){ }
    g.drawImage(viewImage, 0, 0, this);
}

如果不发布我的全部代码,我认为这包含效率最低的部分。你有没有看到我可以改变的东西会阻止程序滞后?

0 个答案:

没有答案