Подскажите логику выполнения этой программы
Не могу понять как работает данный код?
BufferedImage sr;//1
Graphics2D g2;//2
sr = new BufferedImage(576, 676, BufferedImage.TYPE_INT_ARGB);//3
g2 = sr.createGraphics();//4
g2.drawImage(background, 0, 0, this);//5
mainLabel.setIcon(new ImageIcon(sr));//6
Я предполагаю, что это должно работать так:
- объявляю объект типа BufferedImage
- объявляю объект типа Graphics2D
- создаю объект sr
- создаю объект g2
- рисую на объекте g2
- вывожу на label картинку из sr
Получается, что я вывожу на Label картинку из sr. Но ведь я не рисовал на sr.(sr вообще не должна была измениться) Я рисовал на g2. Почему же изменилась sr? Не могу понять принцип. Подскажите логику выполнения этой программы.
Ответы (1 шт):
Описание метода BufferedImage.createGraphics из документации
Creates a Graphics2D, which can be used to draw into this BufferedImage.
Перевод: Метод создает Graphics2D, который может быть использован для рисования на этом BufferedImage.
Грубо говоря, Graphics2D это контекст* рисования на данном графическом объекте, в данном случае это BufferedImage.
Так что ничего удивительного что используя контекст g2 вы рисуете на sr.
* Контекст рисования - ни что иное, как объект-набор инструментов и функций для рисования на конечном устройстве (объекте отображения изображения).