Использование Graphics.copyArea с прозрачным изображением - PullRequest
4 голосов
/ 12 марта 2009

Я пытаюсь сместить часть изображения, в настоящее время использую g.copyArea (). Он отлично работает со сплошными цветами, но прозрачные пиксели не копируются (потому что они прозрачные!). Я хочу сделать цвет под прозрачным.

Это изображение показывает, что происходит, если начальная фигура была скопирована, но я хочу скопировать всю область, переписав все пиксели ниже.

альтернативный текст http://www.freeimagehosting.net/uploads/3f4b8888b0.png

Вот что я хочу:

альтернативный текст http://www.freeimagehosting.net/uploads/ee911ea35a.png

BufferedImage b;
...    
Graphics g = b.getGraphics();
g.copyArea(x,y,w,h,dx,dy);

Я подумал о том, чтобы скопировать изображение в другое изображение, очистить оригинальное изображение, а затем скопировать его обратно в новую позицию, но должен быть лучший способ?

Отказ от ответственности: часть проекта домашней работы.

Ответы [ 2 ]

2 голосов
/ 12 марта 2009

Используйте g.setComposite (AlphaComposite.Src), например так:

Graphics2D g;
...
g.setComposite(AlphaComposite.Src)
g.copyArea(x,y,w,h,dx,dy);

Спасибо, что предложили использовать Graphics2D.

0 голосов
/ 12 марта 2009

Вы уверены, что должны использовать графику? Я думаю, что это полу-устаревший, и вы должны использовать Graphics2D в настоящее время.

С помощью Graphics2D вы можете установить цвет фона, который может помочь предотвратить нежелательную прозрачность.

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