У меня есть off-screen BufferedImage, построенный с типом BufferedImage.TYPE_INT_ARGB
. Он может содержать что угодно, и я ищу способ (достаточно эффективно) полностью перезаписать изображение с прозрачными пикселями, что приведет к "невидимому" изображению.
Используя что-то вроде этого:
(bufimg.getGraphics()).setColor(new Color(10, 10, 100, 0));
(bufimg.getGraphics()).fillRect (0, 0, x, y);
Не действует. Одним из возможных методов может быть просто написать каждый пиксель в BufferedImage, но я не уверен, что это лучшее решение. Как вы это сделаете?
[править]
В документации Graphics не рекомендуется использовать clearRect для изображений вне экрана, но я пробовал его с теми же результатами, что и выше.
[edit2]
После экспериментирования с кодом 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). Это связано с добавлением альфа-значений?