我在 Swing
中显示图像。我在图像上绘图(一堆 drawRect()
调用)并刷新屏幕。图像是不变的,但绘制在上面的对象不是。有什么办法可以避免随时重绘图像吗?由于图形卡可能会显示图像,因此可以安全地假设 drawRect()
调用是瓶颈吗?我绘制了多达 20,000 个调用一帧(但通常不超过 3000 个)。
编辑:确实是 rect 调用减慢了它的速度,通过移除透明 channel 可以使它变得相当快。话虽这么说,但加快速度并增加透明度仍然是件好事。代码真的不能再简单了,所以我希望通过做一些不同的事情来帮助它。
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);
}
}
最佳答案
这是断章取意的,但你能在预先计算的调色板中查找颜色而不是创建 Color
的实例吗?在每个周期?也许这可以稍微提高性能。
编辑:例如,一个 List<Integer>
用作 RGB 查找表 here , 和一个 Queue<Color>
使用here .
关于java - Swing 图片显示优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10727160/