我正在尝试用 Java 绘制图像,我有下一个代码:
public void draw(Graphics g) {
Image strike_mid;
strike_mid = Toolkit.getDefaultToolkit().getImage(getClass().getResource("strike_mid.gif"));
for (int i=0;i<30;i++) {
for (int j=0;j<30;j++) {
if (strikeGrid[i][j]) {
g.drawImage(strike_mid, i*10, j*10, null);
}
}
}
}
当我第一次调用draw方法时,它没有绘制strike_mid图像,而我非常确定for循环中有一个状态它到达了drawImage。
当我第二次调用draw方法时,绘制成功。
我确信它也会第一次到达drawImage,因为当我选择绘制另一个.gif文件时,它也会第一次工作。
那么这里有什么问题呢?第一次使用 Strike_mid.gif 时怎么可能不绘制?
最佳答案
如果我没记错我的 Swing/AWT,仅仅因为 Toolkit
的 getImage
调用返回,并不意味着图像已完全加载。您可以查看 MediaTracker
或 ImageObserver
以了解有关异步加载的更多信息。无论如何,您绝对应该将 getImage
调用从绘图中取出。该工具包可能会缓存 Image 对象,如文档中所述,但没有理由一遍又一遍地重新加载它。
关于Java 图像仅绘制第二次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13932066/