使用带有透明图像的Graphics.copyArea

时间:2009-03-12 12:17:14

标签: java graphics

我正在尝试移动图像的一部分,目前使用g.copyArea()。它适用于纯色,但透明像素不会被复制(因为它们是透明的!)。我想让颜色透明。

此图像显示正在发生的事情,如果复制了开始形状,但我希望复制整个区域,覆盖下面的所有像素。

alt text http://www.freeimagehosting.net/uploads/3f4b8888b0.png

这就是我想要的:

alt text http://www.freeimagehosting.net/uploads/ee911ea35a.png

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

我曾考虑将图像复制到另一张图像,清除原始图像然后将其复制回新位置,但必须有更好的方法吗?

免责声明:这是家庭作业项目的部分

2 个答案:

答案 0 :(得分:2)

使用g.setComposite(AlphaComposite.Src),如下所示:

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

感谢因放弃建议使用Graphics2D。

答案 1 :(得分:0)

你确定你应该使用图形吗?我认为它已经半弃用了,你现在应该使用Graphics2D

使用Graphics2D,您可以设置背景颜色,这可能有助于防止不必要的透明度。