0

我正在尝试通过覆盖绘制组件来绘制另一个图像。

import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
class imgframe{
JFrame f;
imgframe(){
    f= new JFrame("Image Test");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setPreferredSize(new Dimension(400,300));
    imgpanel p= new imgpanel();
    f.getContentPane().add(p);
    f.pack();
    f.setVisible(true);
}
}
class imgpanel extends JPanel{
BufferedImage image,backg;
imgpanel(){
    try {
              image = ImageIO.read(new File("theimage.png"));
              backg = ImageIO.read(new File("backimage.png"));
           } catch (IOException ex) {
                System.out.println("No image found");
   }
    setPreferredSize(new Dimension(400,300));
}
 @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(backg,0,0,null);
        g.drawImage(image, 0, 0, null);
}
}
class imgrun{
public static void main(String args[]){
    imgframe imf= new imgframe();
}
}

我的第一个图像称为图像是 PNG 格式,并且在某些区域具有透明度。第二个称为 backimage 的图像是全黑图像。

我的输出具有白色而不是黑色的透明区域。声明也是如此g.drawImage(image, 0, 0, null);

在没有透明度的情况下将一张图像绘制在另一张图像上?

4

0 回答 0