Java: заполнение BufferedImage прозрачными пикселями

У меня есть закадровый 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). Связано ли это с добавлением альфа-значений?

19
задан Dan Vinton 15 April 2011 в 10:44
поделиться