При рисовании изображения требуется наблюдатель изображения. Из того, что я понимаю до сих пор, BufferedImage является наблюдателем изображения. Но мой вопрос в том, что определяет зритель изображения и что он делает? Я очень смущен.
Что такое ImageObserver?
Ответ 1
Прежде всего, ImageObserver является интерфейсом. Согласно docs:
Асинхронный интерфейс обновления для получения уведомлений об изображениях по мере создания изображения.
Другими словами, это объектно-ориентированный способ использования изображений, которые могут быть изменены до полного создания. Метод imageUpdate(Image img, int infoflags, int x, int y, int width, int height) вызывается в любое время, когда изображение изменяется. Он возвращает true, если он хочет получать уведомления о дальнейших изменениях и false в противном случае. Этот метод можно использовать для форсирования размера, разрешения, цветов и т.д. Он также дает вам некоторый контроль над ошибками (флаг ERROR). Для получения дополнительной информации см. this.
Наблюдатель также может обрабатывать важную информацию об изображении - например, если мы рисуем изображение на экране и меняем его на большее, пока рендеринг не будет завершен, должен быть способ сообщить все, что мы ' на основе чего изменилось измерение (выделите больше места) и что он должен иметь дело с изменениями. Тот факт, что ImageObserver является асинхронным, чрезвычайно важен в этом случае.
Ответ 2
ImageObserver - это интерфейс, который имеет методы для обработки уведомлений о состоянии загрузки изображения. Он может использовать это для повторного отображения по мере необходимости. JFrame и Applet реализуют интерфейс ImageObserver.
Информировать пользователей о загрузке изображения
-
Интерфейс
ImageObserver- позволяет контролировать процесс загрузки, чтобы пользователи могли получать информацию и изображение можно было использовать как можно скорее после его загрузки. -
Загрузка изображения асинхронно - как узнать, когда изображение готово.
-
Изображение готово - метод
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, который указывает, доступна ли вся информация или нет.![info flag table]()
Взгляните на это и объяснение Орейли.
