关于BufferedImage图形的合成

scie 2005-11-25 07:47:35
创建三个同样大小的BufferedImage对象,然后在第一个和第二个上作图,最后前两者绘图的结果合成到第三个BufferedImage对象上,请问如何做呢?

我先把第一个图绘制到第三个图后,再把第二个图绘制到第三个图上时,第二个图会覆盖掉第一个的结果。

另外BufferedImage.TYPE_4BYTE_ABGR类型的图是支持透明色的吧?怎么设置透明色呢?多谢!

BufferedImage image1 = new BufferedImage(300, 200, BufferedImage.TYPE_4BYTE_ABGR);
BufferedImage image2 = new BufferedImage(300, 200, BufferedImage.TYPE_4BYTE_ABGR);
BufferedImage image3 = new BufferedImage(300, 200, BufferedImage.TYPE_4BYTE_ABGR);

Graphics2D g1 = image1 .createGraphics();
g1.setColor(Color.RED);
g1.line(0, 0, 100, 100);

Graphics2D g2 = image2 .createGraphics();
g2.setColor(Color.RED);
g2.line(0, 100, 100, 0);

Graphics2D g3 = image3 .createGraphics();
g3.drawImage(image1, 0, 0, ...);
g3.drawImage(image2, 0, 0, ...); // 会覆盖掉image1

...全文
295 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
giky2323 2006-04-10
  • 打赏
  • 举报
回复
楼主好样的,把答案贴出来供大家学习
向楼主学习
yuucyf 2006-04-10
  • 打赏
  • 举报
回复
Mark
liukang520236 2006-04-10
  • 打赏
  • 举报
回复
恭喜楼主
贺喜楼主
来晚了
scie 2005-11-26
  • 打赏
  • 举报
回复
还是自己回答吧,在网上找到了答案,首先设置image1,和image2为透明就可以了

// 设置透明
g.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f));

// 用透明模式填充整个区域
g.fillRect(0, 0, 300,200);

// 恢复非透明
g.setComposite(AlphaComposite.getInstance(AlphaComposite.DST_OVER, 1.0f));
scie 2005-11-26
  • 打赏
  • 举报
回复
还是自己回答吧,在网上找到了答案,首先设置image1,和image2为透明就可以了

// 设置透明
g.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f));

// 用透明模式填充整个区域
g.fillRect(0, 0, figWidth,figHeight);

// 恢复非透明
g.setComposite(AlphaComposite.getInstance(AlphaComposite.DST_OVER, 1.0f));
数据娃掘 2005-11-25
  • 打赏
  • 举报
回复
学习中....
chinaraul 2005-11-25
  • 打赏
  • 举报
回复
关注,帮楼主顶顶

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧