Image オブジェクトを BufferedImage 上/内部/上に描画してから、その BufferedImage を JPanel に描画する方法を教えてください。
私の問題を説明するための小さなプログラムを用意しました。ImageLoader を伴うパネルを含む単なるフレーム。
画像はコードと同じフォルダーに配置されます。sten Image は、ペイントしただけでは正常にペイントされますが、BufferedImage でペイントしようとするとうまくいきません。これは、プログラムを実行しようとするとわかります。Test オブジェクトを作成するだけで、あとはコンストラクターが行います。
前もって感謝します!
私のコード:
public class Test extends JFrame{
static class ImageLoader {
public static Image loadImage(String name){
Image img = null;
img = Toolkit.getDefaultToolkit().getImage(ImageLoader.class.getResource(name));
return img;
}
}
class Panel extends JPanel{
Image sten;
BufferedImage bf = new BufferedImage(500,500,BufferedImage.TYPE_INT_RGB);
public Panel(Image sten){
super();
this.sten = sten;
initBF();
}
private void initBF(){
Graphics2D g = (Graphics2D) bf.createGraphics();
g.drawImage(sten, 0,0,this);
}
public void paintComponent (Graphics g)
{
g.drawImage(bf, 100,100,null);
g.drawImage(sten, 0,0,null);
repaint();
}
}
public Test(){
setSize(new Dimension(500, 500));
setEnabled(true);
this.setBounds(50, 150, 500, 500);
setVisible(true);
Image sten = ImageLoader.loadImage("sten.png");;
Panel panel = new Panel(sten);
panel.setBackground(Color.GREEN);
panel.setSize(500, 500);
this.add(panel);
setDefaultCloseOperation(EXIT_ON_CLOSE);
panel.paintComponent(this.getGraphics());
}
}