Jump to content

Ява 2D

Java 2D — это API для рисования двумерной графики с использованием языка программирования Java . конечном итоге можно рассматривать как заполнение формы Любую операцию 2D-рисования Java в с помощью краски и композицию результата на экран .

Организация

[ редактировать ]

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 предоставляет операцию рисования . В то время как fill рисует внутреннюю часть фигуры, draw рисует ее контур. Контур может быть простым, как тонкая линия, или сложным, как пунктирная линия, где каждое тире имеет закругленные края.

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

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

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

Оптимизации

[ редактировать ]

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

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

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

Место назначения

[ редактировать ]

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

Совместимость Java2D/OpenGL

[ редактировать ]

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

См. также

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 40489c7369bfc5145eb9a14943b3705f__1720619220
URL1:https://arc.ask3.ru/arc/aa/40/5f/40489c7369bfc5145eb9a14943b3705f.html
Заголовок, (Title) документа по адресу, URL1:
Java 2D - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)