Графические интерфейсы пользователя Java. Тимур Машнин
Чтение книги онлайн.

Читать онлайн книгу Графические интерфейсы пользователя Java - Тимур Машнин страница 15

СКАЧАТЬ изображения, его можно обработать и создать новое изображение.

      Для создания изображения из массива пикселей используется вспомогательный класс MemoryImageSource и объект Toolkit.

      И наконец полученное изображение можно нарисовать.

      На слайде показано, как создаются данные изображения за сценой.

      Производитель изображения – это объект, который реализует интерфейс ImageProducer, и создает необработанные данные для объекта изображения Image.

      Производитель изображения предоставляет эти данные потребителю изображения – объекту, который реализует интерфейс ImageConsumer.

      Если вам не нужно манипулировать или создавать пользовательские изображения, вам обычно не нужно знать о производителе изображения и потребителе изображения.

      AWT автоматически использует производителя и потребителя изображения за сценой.

      При создании экземпляра класса Image требуется наличие производителя изображений.

      Код глубоко внутри AWT создает производителя изображений.

      Как альтернатива программист может предоставить создателя изображения, при создании объекта изображения Image.

      При рисовании экземпляра класса Image методом draw, глубоко внутри AWT создается потребитель изображения.

      Здесь показано, как при создании пользовательского компонента, можно с помощью метода createImage класса Component создать пользовательское изображение, реализуя собственные ImageProducer и ImageConsumer, и нарисовать это изображение в методе paint компонента.

      Java позволяет «фильтровать» изображения с помощью класса ImageFilter или его подклассов.

      AWT поддерживает обработку изображений, позволяя вставлять фильтры изображений между производителем изображения и потребителем изображения.

      Фильтр изображения представляет собой объект ImageFilter, который находится между производителем и потребителем изображения, изменяя данные изображения до того, как потребитель получит его.

      ImageFilter реализует интерфейс ImageConsumer, поскольку фильтр изображения перехватывает сообщения, которые производитель отправляет потребителю.

      Для использования фильтра, создается объект фильтра.

      Далее нужно создать объект класса ImageProducer.

      Этот объект создается при помощи конструктора класса FilteredImageSource.

      В качестве первого параметра мы передаем конструктору ссылку на источник данных исходного изображения, полученный методом getSource, а через второй – ссылку на свой фильтр.

      Затем мы можем создать новое изображение методом createImage.

      Чтобы дождаться процесса завершения формирования изображения, используйте класс MediaTracker.

      После этого изображение готово и доступно для рисования методом drawImage.

      Все фильтры изображений должны быть подклассами класса ImageFilter.

      Если ваш фильтр изображения изменяет цвета или прозрачность изображения, вы можете создать подкласс СКАЧАТЬ