Тимур Машнин

Графические интерфейсы пользователя Java


Скачать книгу

изображения, при создании объекта изображения Image.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      Если ваш фильтр изображения изменяет цвета или прозрачность изображения, вы можете создать подкласс класса RGBImageFilter, который расширяет класс ImageFilter.

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

      Класс ColorFilter расширяет класс RGBImageFilter и содержит три логические переменные, которые определяют, какие цвета должны быть отфильтрованы из изображения.

      Эти переменные задаются параметрами, переданными в конструктор.

      Переменная canFilterIndexColorModel, унаследованная от RGBImageFilter, установлена в значение true, чтобы указать, что записи цветовой карты могут быть отфильтрованы, если входящее изображение использует модель индексированного цвета.

      В Java цвета пикселей управляются через цветовые модели.

      Цветовые модели Java обеспечивают важную абстракцию, которая позволяет Java работать с изображениями разных форматов единым образом.

      Цветовая модель представляет собой объект Java, который предоставляет методы для перевода значений пикселей в соответствующие красные, зеленые и синие цветовые компоненты изображения.

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

      Тем не менее, существуют различные типы цветовых моделей, отражающие различные методы определения цветов пикселей.

      Двумя