我正在编写一个小部件来执行一些缓存,以避免在每次重绘时对一堆形状的Shape.draw进行不必要的调用。
我尝试过这样的事情(scala代码):
private val buffer = new BufferedImage(width, height, /* (1) */)
...
override def paintComponent(Graphics2D g) = {
if (hasChanged) {
val bg = buffer.getGraphics.asInstanceOf[Graphics2D]
bg.draw(/* ... */)
buffer.flush
}
g.drawImage(buffer, null /* (2) */, 0, 0)
}
我不确定放入(1)
和(2)
的内容。 (2)的null
似乎有用(我不想转换)。但对(1)
我不知道选择哪种图像类型。有没有办法在运行时要求“正确”的?
答案 0 :(得分:1)
正如Tedil指出的那样,g.getDeviceConfiguration().createCompatibleImage( width, height, Transparency.OPAQUE)
可以解决问题。