代码如下:
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
public class BufferedImageTest extends JFrame { private BufferedImage buff;
private Image bgPicture = Toolkit.getDefaultToolkit().getImage("mainbg.jpg");
public BufferedImageTest(){
buff = new BufferedImage(800,600,BufferedImage.TYPE_INT_RGB);
buff.getGraphics().drawImage(bgPicture,0,0,null);
buff.getGraphics().drawLine(0,0,800,600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(800,600);
this.setVisible(true);
}
public static void main(String[] args) {
new BufferedImageTest(); }
public void paint(Graphics g){
g.drawImage(buff,0,0,this);
}}
这里buff.getGraphics().drawLine(0,0,800,600);这条线可以显示出来,
但是为什么buff.getGraphics().drawImage(bgPicture,0,0,null);图片显示不出来呢?图片文件名没问题啊,哪位大哥帮下忙~~ 谢谢了
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
public class BufferedImageTest extends JFrame { private BufferedImage buff;
private Image bgPicture = Toolkit.getDefaultToolkit().getImage("mainbg.jpg");
public BufferedImageTest(){
buff = new BufferedImage(800,600,BufferedImage.TYPE_INT_RGB);
buff.getGraphics().drawImage(bgPicture,0,0,null);
buff.getGraphics().drawLine(0,0,800,600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(800,600);
this.setVisible(true);
}
public static void main(String[] args) {
new BufferedImageTest(); }
public void paint(Graphics g){
g.drawImage(buff,0,0,this);
}}
这里buff.getGraphics().drawLine(0,0,800,600);这条线可以显示出来,
但是为什么buff.getGraphics().drawImage(bgPicture,0,0,null);图片显示不出来呢?图片文件名没问题啊,哪位大哥帮下忙~~ 谢谢了
把:private Image bgPicture = Toolkit.getDefaultToolkit().getImage("mainbg.jpg");
换成:ImageIcon bgPicture=new ImageIcon("mainbg.jpg");
然后,
把:buff.getGraphics().drawImage(bgPicture,0,0,null);
改成:buff.getGraphics().drawImage(bgPicture.getImage(),0,0,null);
tr.addImage(bgPicture,0);
try{
tr.waitForId(0);
}catch(Exception e) { }Image是从系统底层构建的,好像得花费时间,而操作并不等它建完就回去进行下一步操作,这样的话,往往就来不及画出来。使用MediaTracker就没有这个问题了,他是画完了才进行下一步操作。
试试看,是不是这个问题。