创建三个同样大小的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

解决方案 »

  1.   

    还是自己回答吧,在网上找到了答案,首先设置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));
      

  2.   

    还是自己回答吧,在网上找到了答案,首先设置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));