Buffered中的BufferedImage imageType

时间:2010-08-11 13:52:08

标签: java swing scala java-2d

我正在编写一个小部件来执行一些缓存,以避免在每次重绘时对一堆形状的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)我不知道选择哪种图像类型。有没有办法在运行时要求“正确”的?

1 个答案:

答案 0 :(得分:1)

正如Tedil指出的那样,g.getDeviceConfiguration().createCompatibleImage( width, height, Transparency.OPAQUE)可以解决问题。