Java:用透明像素填充缓冲图像
我有一个屏幕外的BufferedImage,用类型构建。它可以包含任何东西,我正在寻找一种方法(相当有效地)用透明像素完全覆盖图像,从而产生“不可见”的图像。BufferedImage.TYPE_INT_ARGB
使用类似如下的内容:
(bufimg.getGraphics()).setColor(new Color(10, 10, 100, 0));
(bufimg.getGraphics()).fillRect (0, 0, x, y);
没有效果。一种可能的方法可能是覆盖BufferedImage中的每个像素,但我不确定这是最好的解决方案。你会怎么做?
[编辑]
图形文档建议不要对屏幕外图像使用 clearRect,但我已尝试了与上述相同的结果。
[编辑2]
在尝试了MeBigFatGuy的代码之后(谢谢!),它确实清除了图像。但它也停止了对该图像的进一步绘画(或似乎)。例如,此代码:
BufferedImage img = new BufferedImage (600, 600, BufferedImage.TYPE_INT_ARGB);
Graphics g = img.createGraphics ()
g.drawLine (100, 100, 500, 500);
AlphaComposite composite = AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f);
g.setComposite(composite);
g.setColor(new Color(0, 0, 0, 0));
g.fillRect(0, 0, 600, 600);
graphicsAI.setColor(new Color (10, 10, 10, 255));
graphicsAI.drawLine (100, 100, 500, 500);
导致图像上看不到任何内容(我正在将图像绘制到JPanel)。这是否与 Alpha 值的添加有关?