绘制图像时需要图像观察者。据我所知,到目前为止,BufferedImage是一个图像观察者。但我的问题是,图像观察者的定义是什么,它做了什么?我很困惑。
答案 0 :(得分:13)
首先,ImageObserver
是界面。根据{{3}}:
异步更新接口,用于在构建Image时接收有关图像信息的通知。
换句话说,它是一种面向对象的方式来使用可以在完全创建之前修改的图像。每次修改图像时都会调用方法imageUpdate(Image img, int infoflags, int x, int y, int width, int height)
。如果希望收到有关进一步更改的通知,则返回true
,否则返回false
。此方法可用于强制大小,分辨率,颜色等。它还可以控制错误(ERROR
标志)。有关详细信息,请参阅docs。
观察者也可以处理有关图像的重要信息 - 例如,如果我们在屏幕上绘制图像并在渲染完成之前将其更改为更大的图像,则必须有一种方法来告知我们的任何信息。重新绘制维度已更改(分配更多空间)并且必须处理更改。在这种情况下,ImageObserver
异步的事实非常重要。
答案 1 :(得分:10)
ImageObserver
是一个接口,它具有处理图像加载状态通知的方法。它可以根据需要使用它来重新显示。 JFrame
和Applet
都实现ImageObserver
接口。
让用户了解 图片
的加载信息 ImageObserver
interface - 启用对加载过程的监控
可以通知用户,并且图像可以在加载后尽快使用。
异步加载图像 - 如何知道图像何时就绪。
图像准备就绪 - getImage()
方法很久以前就会返回
了解图像。
imageUpdate(Image img, int infoflags, int x, int y, int width, int height)
注意:java.awt.Component
实现ImageObserver
,所有子类都执行
好!
g.drawImage(imge, 0,0, this)
- 这是指ImageObserver
个实例。
imageUpdate()
- 必要时由ImageObserver
调用。你不打电话
明确地说!
false
。true
。 ImageObserver.ALLBITS = 32
组合各种常量以形成infoflags
参数,表示
是否所有信息都可用。