我有一个通过以下代码创建的透明BufferedImage(如何创建不重要,我认为):
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gs = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gs.getDefaultConfiguration();
Rectangle screen = transformationContext.getScreen();
// Create an image that supports transparent pixels
return gc.createCompatibleImage((int) screen.getWidth(), (int) screen.getHeight(),
Transparency.BITMASK);
如何以最快的方式清除图像(将其清空,使其与创建时相同状态),而不必重新创建图像?重新创建图像会给GC带来负担,导致VM暂停并冻结UI。
clearRect
已被弃用,尽管它没有被标记为弃用(可能是因为注释还不存在吗?)。现在的首选方法是:graphics.setComposite(AlphaComposite.Clear); graphics.fillRect(0, 0, SIZE, SIZE); graphics.setComposite(AlphaComposite.SrcOver);
(假设你之前使用的合成方式是SrcOver
,并且这是默认设置)。这实际上与clearRect
的实现非常接近。 - Mark Jeronimus@Deprecated
注释不在代码中(它还不存在),因此也不在 Javadocs 中。 - Qix - MONICA WAS MISTREATEDnew Color(0, 0, 0, 0)
得到了更好的结果。 - Emmanuel Bourg