4

我正在显示图像Swing。我在图像(一堆drawRect()调用)上绘图并刷新屏幕。图像是恒定的,但在顶部绘制的对象不是。有什么办法可以避免随时重绘图像吗?既然图形卡可能会显示图像,那么假设drawRect()调用是瓶颈是否安全?我每帧绘制多达 20,000 个调用(但通常不超过 3000 个)。

编辑:确实是 rect 调用减慢了它的速度,并且可以通过删除透明度通道来加快速度。话虽如此,加快速度并包括透明度仍然会很好。代码不能真正变得更简单,所以我希望通过做一些不同的事情会有所帮助。

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);
    }       
}
4

1 回答 1

2

这与上下文无关,但是您可以在预先计算的调色板中查找颜色,而不是Color在每个循环中创建 a 的实例吗?也许这可以稍微提高性能。

编辑:例如,此处使用 a作为List<Integer>RGB 查找表,此处Queue<Color>使用a 。

于 2012-05-23T20:38:51.210 回答