Показать сообщение отдельно
Старый 30.03.2011, 07:26   #3
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Проблема с getGraphics()

foldel, тут дело в том, что нельзя рисовать в "неизменяющиеся" (immutable) картинки. загруженная из файла картинка именно такой и является.
Как быть? Вот:

а. Грузишь свою картинку из файла [img1]
б. Создаёшь новую картинку, с размерами той, которую грузил, через Image.createImage(width, height) [img2]
в. Получаешь Graphics у картинки img2 [gfx]
г. Рисуешь в gfx картинку img1
д. Рисуешь в gfx всё что нужно было нарисовать поверх img1

Замечание: при создании картинки img2 она заливается белым фоном автоматически, поэтому теряется прозрачность, если она была в img1.
Вернуть её можно, пробежав по всем пикселям картинки img2 и заменив точки с цветом фона на точки с цветом 0.
Пиксели можно получить через img2.getRGB(), а заново картинку создать через Image.createRGBImage().
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Aarrgghh (03.10.2011)