我正在尝试移动图像的一部分,目前使用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);
我曾考虑将图像复制到另一张图像,清除原始图像然后将其复制回新位置,但必须有更好的方法吗?
免责声明:这是家庭作业项目的部分。
答案 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
,您可以设置背景颜色,这可能有助于防止不必要的透明度。