我需要一些帮助来在 BufferedImage 上/内部/上绘制 Image 对象,然后在 JPanel 上绘制该 BufferedImage。
我准备了一个小程序来说明我的问题。只是一个带有 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());
}
}