Java 图像仅绘制第二次

标签 java image draw

我正在尝试用 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,仅仅因为 ToolkitgetImage 调用返回,并不意味着图像已完全加载。您可以查看 MediaTrackerImageObserver 以了解有关异步加载的更多信息。无论如何,您绝对应该将 getImage 调用从绘图中取出。该工具包可能会缓存 Image 对象,如文档中所述,但没有理由一遍又一遍地重新加载它。

关于Java 图像仅绘制第二次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13932066/

相关文章:

javascript - 如何监控图像源的完全加载状态

java - 在 JPanel 上的已知坐标处绘制形状

c# - 使用 C# 和 Visual Studio 创建可以动态更改其形状和位置的形状

java - LinkedHashMap<String, String> 错误

java - 有没有办法从另一个 java 程序中运行一个 java 程序?

java - 如何设置 JavaFX WebView 的编码?

java - 如何使用 Intellij 和 swing 界面选项卡创建类似功能?

image - OpenGL 与 GLUT——malloc 错误

java - 什么是降低 PNG 位深度的最佳方法

javascript - 在图像 R Shiny 上绘制矩形的浏览器友好方式