当前位置: 技术问答>java相关
Applet中,drawImage返回flase,不能正常显示,如何解决?
来源: 互联网 发布时间:2015-04-22
本文导语: 我Applet中不断调用一个函数 该函数中用Graphics::drawImage显示图片,如下示 boolean b=false; b=g.drawImage(imgError,thex(i),they(j),this); 在开始的一段时间内返回值b经常会是false,导致显示不正常, 这是为什么?有...
我Applet中不断调用一个函数
该函数中用Graphics::drawImage显示图片,如下示
boolean b=false;
b=g.drawImage(imgError,thex(i),they(j),this);
在开始的一段时间内返回值b经常会是false,导致显示不正常,
这是为什么?有什么办法解决确保在开始的一段时间内也正常显示呢?
但是,只要显示一段时间后,
^^^^
即该函数被调用若干次后返回值b就会一直是true,再也不会返回false了。
该函数中用Graphics::drawImage显示图片,如下示
boolean b=false;
b=g.drawImage(imgError,thex(i),they(j),this);
在开始的一段时间内返回值b经常会是false,导致显示不正常,
这是为什么?有什么办法解决确保在开始的一段时间内也正常显示呢?
但是,只要显示一段时间后,
^^^^
即该函数被调用若干次后返回值b就会一直是true,再也不会返回false了。
|
当drawImage这个方法中的图片没有被完全加载的时候,
这个方法会返回false。
drawImage方法是在调用的时候才加载所需要的图片,所以第一次调用的时候,图片没有被完全加载,造成显示的不正常,甚至不显示图片,此后,图片由于方法调用被加载,以后再以这幅图片为参数的时候,就可以正常显示了。
解决方案:使用MediaTracker类
Image img = Toolkit.getDefaultToolkit().getImage(imgPath);
MediaTracker t = new MediaTracker(this);
t.addImage(img, 0);
t.waitForAll();
将这段代码在drawImage()之前调用,MediaTracker可以确保你的图片在DRAW前被加载以备使用。通过addImage方法加入一个Image并符上一个ID号,waitForAll()等待加入的所有图片被加载完毕。
这个方法会返回false。
drawImage方法是在调用的时候才加载所需要的图片,所以第一次调用的时候,图片没有被完全加载,造成显示的不正常,甚至不显示图片,此后,图片由于方法调用被加载,以后再以这幅图片为参数的时候,就可以正常显示了。
解决方案:使用MediaTracker类
Image img = Toolkit.getDefaultToolkit().getImage(imgPath);
MediaTracker t = new MediaTracker(this);
t.addImage(img, 0);
t.waitForAll();
将这段代码在drawImage()之前调用,MediaTracker可以确保你的图片在DRAW前被加载以备使用。通过addImage方法加入一个Image并符上一个ID号,waitForAll()等待加入的所有图片被加载完毕。