나는 한동안 프로젝트를 진행 해왔다. 나는 내 카드 점 게임을 만들 때 사용할 카드 덱 클래스를 만들고 있습니다. 나는 카드를 그리는 대신 카드의 색인을 위해 이미지를 사용하기로 결정했다. Illustrator에서 내 자신의 양복을 그려서 투명 배경이있는 PNG로 저장했습니다. 나는 럼 (rum) 할 때 프로그램에서 보여줄 이미지를 얻을 수 있지만 JFrame에 이미지를 추가하면 배경색이 사라져서 어떤 이유로 투명도가 유지되지 않는다고 생각하게됩니다. GUI에 이미지를 추가하는 두 가지 방법을 시도해 보았고 같은 결과를 얻었습니다. 내가 시도한 한 가지 방법은 여기에 제안 된 방법입니다 How to add an image to a JPanel? 그리고 내가 시도한 다른 방법은 여기에 제안 된 것입니다 How can I display a BufferedImage in a JFrame? 이 두 방법 모두 내가 찾고있는 것이 아닙니다. 내 소송을 화면에 표시하고 배경을 계속 볼 수 있기를 바랍니다.png 이미지에 투명 배경을 유지하는 방법
여기 내가 제대로 작동하고 싶습니다. 현재 컴파일하고 잘 실행된다는 것을 알고 있지만 여전히 배경을 볼 수 있기를 바랍니다.
import java.io.File;
import java.io.IOException;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.imageio.ImageIO;
public class ImageReadTest extends JPanel{
public static void main(String[] args){
//Just a simple test on reading pictures into a java file and drawing them
//onto a JFrame
System.out.println("Java Image Read Test");
JFrame frame = new JFrame("Image Reader");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBackground(Color.green);
frame.add(new ImageReadTest());
frame.pack();
frame.setSize(250,250);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private BufferedImage image;
public ImageReadTest(){
try{
image = ImageIO.read(new File("Club.png"));
} catch(IOException e){
System.out.println("Error");
}
}
@Override
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(image, 90, 90, null);
}
}//end class ImageReadTest
여기 내 코드를 테스트하기위한 내 이미지입니다. 시간을내어 읽고 도움을 주셔서 감사합니다.
나는 이미지 전문가는 아니지만 당신이 알파 채널을 볼 수 있도록'BufferedImage.TYPE_INT_ARGB'에 이미지 유형을 설정해야합니다 생각한다. 'ImageIO.read (File)'에 의해 제공되는 디폴트를 사용할 수없는 경우가 있습니다. 그게 문제가된다면 문제는 http://stackoverflow.com/q/4694153/18157입니다. "java jgrame png transparency"에 대한 간단한 Google 검색에서 알 수 있습니다. –
@ 짐 게리슨 레이블에 저장된 이미지 아이콘으로 이미지가있는 JLabel을 만드는 것이 문제였습니다. 나는 그 방법을 사용하는 것을 피하고 싶다. 나는이 질문을 게시하기 전에 그것을 시도했지만 이미지는 표시하지만 투명성은 표시하지 않습니다. 당신이 제공 한 질문에서 OP는 투명 부분이 검은 색으로 나타나는데 이는 나에게 해당하지 않는다고 말합니다. 또한 BufferedImage.TYPE_INT_ARGB와 함께 일한 적이 없으며 제공된 질문은 enum을 사용하는 방법에 대한 많은 예제를 제공하지 않으며 열거 형이라고 가정합니다. –