什么是ImageObserver?

Tro*_*oot 14 java bufferedimage awt imageobserver

绘制图像时需要图像观察者.据我所知,到目前为止,BufferedImage是一个图像观察者.但我的问题是,图像观察者的定义是什么,它做了什么?我很困惑.

Mat*_*usz 13

首先,ImageObserver是一个界面.根据文件:

一个异步更新接口,用于在构建Image时接收有关Image信息的通知.

换句话说,它是一种面向对象的方式来使用可以在完全创建之前修改的图像.每次imageUpdate(Image img, int infoflags, int x, int y, int width, int height)修改图像时都会调用方法.它返回true,如果要通知有关进一步的变化和false其他.此方法可用于强制大小,分辨率,颜色等.它还可以控制错误(ERROR标记).欲了解更多信息请参阅.

观察者还可以处理关于图像的重要信息 - 例如,如果我们在渲染完成之前在屏幕上绘制图像并将其更改为更大的图像,则必须有一种方法来通知我们正在绘制的图像维度已更改(分配更多空间)并且必须处理更改.这事实上ImageObserver异步的是在这种情况下非常重要.


cMi*_*nor 10

ImageObserver是一个接口,具有处理图像加载状态通知的方法.它可以根据需要使用它来重新显示. JFrame并且Applet都实现了ImageObserver接口.

为了告诉用户关于加载图像

  • ImageObserver interface - 启用对加载过程的监视,以便在加载后可以通知用户并尽快使用图像.

  • 异步加载图像 - 如何知道图像何时准备就绪.

  • 注意:java.awt.Componentimplements ImageObserver,所有子类都可以!

  • g.drawImage(imge, 0,0, this)- 这是指ImageObserver实例.

  • imageUpdate()- ImageObserver在必要时调用.你没有明确地称它!

    • 如果图像完整,则返回false.
    • 如果图像不完整且需要更新,则返回true.
  • ImageObserver.ALLBITS = 32

  • 组合各种常量以形成infoflags参数,该参数指示是否所有信息都可用.

    信息标志表

看看这个Oreilly的解释.