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

pet*_*ust 20 java drawimage

如何使用Java的drawImage()?我没有找到JDK文档.例如,所有drawImage签名都需要一个ImageObserver,但是这个文档对新用户没有多大帮助.

Kev*_*ose 26

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

更清楚的是,如果您drawImage使用未完全加载的图像进行调用,它将:

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

基本上,如果您在内存中工作Image(从文件系统加载,或由程序构建),请不要担心ImageObserver参数.如果您正在Image通过网络加载并且没有明确等待它们加载,那么您需要使用一个ImageObserver来确保"完全"绘制Image.


Lau*_*ves 8

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

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

请注意,Componentimplements ImageObserver及其imageUpdate方法将导致repaint受影响的区域.