Java Graphics.drawImage() 如何工作以及 ImageObserver 的作用是什么

2022-09-02 09:13:40

应该如何使用Java的drawImage()?我不认为JDK文档非常接近。例如,所有drawImage签名都需要一个ImageObserver,但这方面的文档对新用户来说不是很有帮助。


答案 1

你可以逃脱[或类似]。该参数是一个回调,通知您绘制操作的进度;并且只有在异步获取 Image 参数时才真正有用。Graphics.drawImage(img, x, y, null)ImageObserver

为了更清楚起见,如果您使用未完全加载的映像进行调用,它将:drawImage

  1. 返回 false(立即)
  2. 绘制尽可能多的(所有加载的内容)Image
  3. 并且,在将来的某个时刻,调用更多图像可用时ImageObserver

基本上,如果您在内存中使用(从文件系统加载或由程序构造),请不要担心参数。如果您正在通过网络加载 s,并且没有显式等待它们加载,则需要使用 一个来确保“完全”绘制一个 .ImageImageObserverImageImageObserverImage


答案 2

Image对象不一定完全加载。如果在不完整的图像上调用 ,它将尽可能多地绘制图像,然后在加载更多图像时发出警报(通过调用)。Graphics.drawImageImageObserverimageUpdate

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

请注意,实现 ,其方法将在受影响的区域上引起 。ComponentImageObserverimageUpdaterepaint


推荐