Из Википедии, бесплатной энциклопедии
  (Перенаправлено с Java2D )
Перейти к навигации Перейти к поиску

В вычислениях , Java 2D является API для рисования двухмерных графиков с использованием языка программирования Java . Каждый рисунок операция Java 2D может в конечном счете рассматриваться как заполнение в форме с использованием краски и композитингом результата на экран .

Организация [ править ]

Java 2D API и его документация доступны для загрузки как часть JDK 6. Классы Java 2D API организованы в следующие пакеты в JDK 6:

  • java.awtОсновной пакет Java Abstract Window Toolkit .
  • java.awt.geom Стандартная библиотека Java двухмерных геометрических фигур, таких как линии, эллипсы и четырехугольники.
  • java.awt.fontБиблиотека для управления глифами в Java.
  • java.awt.color Библиотека, имеющая дело со многими различными способами представления цвета.
  • java.awt.image Библиотека для работы с графическими изображениями.
  • java.awt.print Библиотека инструментов для письма на бумагу.

Основные понятия [ править ]

Эти объекты являются необходимой частью каждой операции 2D-рисования Java.

Фигуры [ править ]

Форма в Java 2D является граница , которая определяет внутреннюю и внешнюю. Операция рисования влияет на пиксели внутри фигуры, а на пиксели снаружи - нет.

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

Краски [ править ]

Краска генерирует цвета , которые будут использоваться для каждого пикселя операции заливки. Самая простая краска - java.awt.Colorэто один и тот же цвет для всех пикселей. Более сложные краски могут создавать градиенты, изображения или любую комбинацию цветов. Заполнение круглой формы желтым цветом приводит к сплошному желтому кругу, а заливка той же круглой формы с использованием краски, генерирующей изображение, дает круглый вырез изображения.

Композиты [ править ]

Во время любой операции рисования есть источник (пиксели, создаваемые краской) и место назначения (пиксели, уже отображаемые на экране). Обычно исходные пиксели просто перезаписывают пиксели назначения, но композит позволяет изменить это поведение.

Композиция, учитывая исходный и целевой пиксели, дает окончательный результат, который в конечном итоге отображается на экране. Наиболее распространенный составной элемент - это java.awt.AlphaComposite, который может обрабатывать нарисованные пиксели как частично прозрачные, так что целевые пиксели в некоторой степени видны.

Заполнение [ править ]

Чтобы заполнить фигуру, первым делом нужно определить, какие пиксели попадают внутрь фигуры. На эти пиксели будет влиять операция заливки. Пиксели, которые частично находятся внутри и частично за пределами формы, могут быть затронуты в меньшей степени, если включено сглаживание .

Затем краске предлагается создать цвет для каждого из окрашиваемых пикселей. В обычном случае сплошной заливки каждый пиксель будет иметь один и тот же цвет.

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

Продвинутые объекты [ править ]

Эти объекты можно рассматривать как выполняющие свои обязанности с точки зрения более простых объектов, описанных выше.

Преобразовать [ править ]

Каждая 2D-операция Java подлежит преобразованию , так что фигуры могут быть преобразованы, повернуты, срезаны и масштабированы по мере их рисования. Активное преобразование чаще всего является преобразованием идентичности , которое ничего не делает.

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

Инсульт [ править ]

В дополнение к операции заполнения Java 2D предоставляет операцию рисования . Пока заливка рисует внутреннюю часть фигуры, рисование рисует ее контур. Контур может быть таким простым, как тонкая линия, или сложным, как пунктирная линия, с каждой чертой с закругленными краями.

Объект, отвечающий за создание контура, - это обводка . При заданной форме ввода обводка создает новую форму, представляющую ее контур. Например, бесконечно тонкий отрезок линии (без внутренней части) можно преобразовать в прямоугольник шириной в один пиксель.

Таким образом, операцию рисования можно описать как создание нового обведенного объекта с последующим заполнением этого объекта.

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

Оптимизация [ править ]

Концептуально рисование прямой черной линии в Java 2D можно рассматривать как создание линейного сегмента, преобразование его в соответствии с текущим преобразованием, перемещение по нему для создания тонкого прямоугольника, запрос этой формы для вычисления затронутых пикселей, создание пикселей с использованием java.awt.Color.BLACK, а затем вывод результатов на экран.

Однако выполнение всей этой последовательности шагов для каждой операции рисования было бы очень неэффективным. Поэтому Java 2D оптимизирует общие операции рисования, поэтому многие из этих шагов можно пропустить. Например, если краска представляет собой простой сплошной цвет, на самом деле нет необходимости давать ей команду для создания списка окрашиваемых цветов. Точно так же, если используется полностью непрозрачный композит по умолчанию, на самом деле запрашивать его на выполнение операции композитинга нет необходимости, и это приведет к потере усилий.

Java 2D выполняет минимальный объем работы, необходимый, чтобы создать впечатление, будто она выполняет все эти шаги для каждой операции, тем самым сохраняя при этом большую гибкость и высокую производительность.

Место назначения [ править ]

Для простоты в текстовых примерах, приведенных в этой статье, предполагается, что конечным устройством является экран. Однако местом назначения может быть что угодно, например, принтер, изображение в памяти или даже объект, который принимает команды Java 2D-графики и переводит их в файлы векторных графических изображений.

Совместимость Java2D / OpenGL [ править ]

Начиная с Java SE 6 , Java2D и OpenGL стали взаимодействовать друг с другом, что позволяет, например, рисовать анимированную трехмерную графику вместо значков на кнопке (см. JOGL ).

См. Также [ править ]

  • Java 3D
  • Библиотека классов Java
  • Java-апплет

Ссылки [ править ]

Внешние ссылки [ править ]

  • Целевая страница Java 2D в Oracle
  • Учебное пособие по Java 2D в Oracle