ImageIcon + ImageIcon = ImageIcon - PullRequest
1 голос
/ 14 мая 2009

У меня есть два ImageIcons, и я хочу создать третий ImageIcon с номером 2, нарисованным на № 1. Как мне лучше всего это сделать?

1 Ответ

7 голосов
/ 14 мая 2009

Следующий код берет Image из двух ImageIcon с и создает новый ImageIcon.

Изображение со второго ImageIcon рисуется поверх изображения с первого, затем полученное изображение используется для создания нового ImageIcon:

Image img1 = imageIcon1.getImage();
Image img2 = imageIcon2.getImage();

BufferedImage resultImage = new BufferedImage(
    img1.getWidth(null), img1.getHeight(null), BufferedImage.TYPE_INT_ARGB);

Graphics2D g = resultImage.createGraphics();
g.drawImage(img1, 0, 0, null);
g.drawImage(img2, 0, 0, null);
g.dispose();

ImageIcon resultImageIcon = new ImageIcon(resultImage);

Редактировать (Исправлены некоторые ошибки, добавлена ​​поддержка прозрачности.)

Для обеспечения прозрачности можно использовать BufferedImage.TYPE_INT_ARGB для типа изображения в конструкторе, а не BufferedImage.TYPE_INT_RGB, у которого нет альфа-канала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...