代码之家  ›  专栏  ›  技术社区  ›  peter.murray.rust

Java Graphics.drawImage()是如何工作的?ImageObserver的角色是什么

  •  19
  • peter.murray.rust  · 技术社区  · 15 年前

    4 回复  |  直到 15 年前
        1
  •  30
  •   Kevin Montrose    15 年前

    你可以逍遥法外 Graphics.drawImage(img, x, y, null) ImageObserver 参数是一个回调函数,用于通知绘制操作的进度;并且只有在异步获取图像参数时才真正有用。

    更清楚地说,如果你打电话 drawImage 对于未完全加载的图像,它将:

    1. 返回false(立即)
    2. 画尽可能多的画 Image 尽可能(所有已加载)
    3. 图像观察者

    基本上,如果你在内存中使用 形象 s(从文件系统加载,或由程序构造)不必担心 图像观察者 参数如果你正在加载 如果在网络中没有显式地等待加载,则需要使用 图像观察者 确保“完全”绘制一个

        2
  •  8
  •   Laurence Gonsalves    15 年前

    Image 对象不一定完全加载。如果 Graphics.drawImage 在不完整的图像上调用,它将尽可能多地绘制图像,然后向 ImageObserver (打电话 imageUpdate

    这个 可以为null,在这种情况下,您将不会收到任何通知。如果已知已加载图像,或者已经有另一种机制进行重新绘制,则这是常见的。

    注意 Component 工具 ,及其 图像更新 方法将导致 repaint 在受影响的地区。

        3
  •  1
  •   Jack    15 年前

    实际上我用过 drawImage() 很多次总是和你在一起 ImageObserver 参数设置为 null . 好吧,这并不意味着它没用,但我做了我需要的一切,却不知道它的用途。。

        4
  •  1
  •   Duncan McGregor Evgeniy Dorofeev    15 年前

    在这种情况下,首次调用drawImage时,它可能不会呈现任何内容。当尺寸和像素可用时,会通知ImageObserver。就 Component implements ImageObserver ,其行为是在数据可用时重新绘制。