java – Swing图像显示优化

我在Swing中显示图像.我正在绘制图像(一堆drawRect()调用)并刷新屏幕.图像是常量,但顶部绘制的对象不是.有没有办法避免随时重绘图像?由于显卡可能会显示图像,因此可以安全地假设drawRect()调用是瓶颈吗?我画一帧多达20,000个(但通常不超过3000个).

编辑:确实是调用减慢的矩形调用,通过删除透明度通道可以大大加快.话虽这么说,加速它并包括透明度仍然会很好.代码实际上不会变得更简单,所以我希望通过做一些不同的事情来帮助它.

public void paintComponent(Graphics g) {
    super.paintComponent(g) ;
    //grid or walkers
    g.drawImage(image, 0, 0, null);

    for(Walker w : walkArray){
        g.setColor(new Color(255,255-w.data[3], 0, w.data[2]));
        g.drawRect(w.data[0], w.data[1], 1, 1);
    }       
}

最佳答案 这是脱离上下文的,但是您可以在预先计算的调色板中查找颜色,而不是在每个循环中创建颜色的实例吗?也许这可以提高性能.

编辑:例如,List< Integer>用作RGB查找表here,以及队列< Color>.用于here.

点赞