【发布时间】:2012-05-30 10:15:24
【问题描述】:
我正在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);
}
}
【问题讨论】:
-
你能发布你的绘画方法吗?
-
贴一些代码,更好的是,发布SSCCE。
-
图片是否显示在 BufferedImage 中?在没有代码的情况下,我们再次陷入困境。
-
图像对象不是缓冲图像。只是一张图片。