Класс Graphics2D
public abstract class Graphics2D extends Graphics
Graphics2D класс расширяет класс Graphics, предоставляя более сложный контроль над геометрией, преобразованиями координат, управлением цветом и выкладкой текста. Это базовый класс для отрисовки двумерных фигур, текста и изображений на платформе Java(tm). Пространства координат
Все координаты, передаваемые объектуGraphics2D, задаются в независимой от устройства системе координат, называемой Пространством пользователя, которая используется приложениями. Объект Graphics2D содержит объект AffineTransform в составе состояния отрисовки, который определяет способ преобразования координат из пространства пользователя в зависящие от устройства координаты в Пространстве устройства. Координаты в пространстве устройства обычно относятся к отдельным пикселям устройства и выравниваются на бесконечно тонких промежутках между этими пикселями. Некоторые объекты Graphics2D могут использоваться для захвата операций отрисовки для хранения в графическом метафайле для воспроизведения на конкретном устройстве неизвестного физического разрешения в более позднее время. Поскольку разрешение может быть неизвестно при захвате операций отрисовки, Graphics2D Transform настроен на преобразование координат пользователя в виртуальное пространство устройства, которое приближает ожидаемое разрешение целевого устройства. Дополнительные преобразования могут потребоваться в момент воспроизведения, если оценка окажется неверной.
Некоторые операции, выполняемые объектами атрибутов отрисовки, происходят в пространстве устройства, но все методы Graphics2D принимают координаты пространства пользователя.
Каждый объект Graphics2D связан с целевым объектом, который определяет, где происходит отрисовка. Объект GraphicsConfiguration определяет характеристики целевого объекта отрисовки, такие как формат пикселей и разрешение. Один и тот же целевой объект отрисовки используется на протяжении всего жизненного цикла объекта Graphics2D.
При создании объекта Graphics2D, GraphicsConfiguration задает преобразование по умолчанию для целевого объекта Graphics2D (объекта Component или Image). Это преобразование по умолчанию отображает систему координат пространства пользователя на координаты устройств экрана и принтера таким образом, что начало отсчёта отображается в верхнем левом углу целевого региона устройства, увеличивающиеся координаты X простираются вправо, а увеличивающиеся координаты Y простираются вниз. Масштабирование преобразования по умолчанию установлено в единичное значение для устройств, близких к 72 dpi, таких как устройства экрана. Масштабирование преобразования по умолчанию установлено приблизительно в 72 координаты пространства пользователя на квадратный дюйм для устройств с высоким разрешением, таких как принтеры. Для буферов изображений преобразование по умолчанию является преобразованием Identity.
Процесс отрисовки
Процесс отрисовки можно разбить на четыре фазы, которые контролируются атрибутами отрисовкиGraphics2D. Рендерер может оптимизировать многие из этих шагов, кэшируя результаты для будущих вызовов, объединяя несколько виртуальных шагов в одну операцию или распознавая различные атрибуты как общие простые случаи, которые можно устранить, изменив другие части операции. Шаги процесса отрисовки:
- Определить, что отрисовывать.
- Ограничить операцию отрисовки текущей областью
Clip. ОбластьClipзадаётся объектомShapeв пространстве пользователя и управляется программой с помощью различных методов изменения обрезкиGraphicsиGraphics2D. Этот клип пользователя преобразуется в пространство устройства текущимTransformи объединяется с клипом устройства, который определяется видимостью окон и областями устройства. Комбинация клипа пользователя и клипа устройства определяет составной клип, который определяет конечную область обрезки. Клип пользователя не изменяется системой отрисовки, чтобы отразить результирующую составную область обрезки. - Определить цвета для отрисовки.
- Применить цвета к целевой поверхности рисования, используя текущий атрибут
Compositeв контекстеGraphics2D.
Три типа операций отрисовки вместе с подробностями каждого из их конкретных процессов отрисовки:
-
Shapeоперации- Если операция является операцией
draw(Shape), то методcreateStrokedShapeтекущего атрибутаStrokeв контекстеGraphics2Dиспользуется для построения нового объектаShape, содержащего контур указанной фигурыShape. -
Shapeпреобразуется из пространства пользователя в пространство устройства с использованием текущегоTransformв контекстеGraphics2D. - Контур фигуры
Shapeизвлекается с помощью методаgetPathIteratorобъектаShape, который возвращает объектPathIterator, который итерирует по границеShape. - Если объект
Graphics2Dне может обрабатывать криволинейные сегменты, возвращаемые объектомPathIterator, то он может вызвать альтернативный методgetPathIteratorобъектаShape, который сглаживаетShape. - Текущий атрибут
Paintв контекстеGraphics2Dзапрашивается для получения объектаPaintContext, который задаёт цвета для отрисовки в пространстве устройства.
- Если операция является операцией
- Операции с текстом
- Следующие шаги используются для определения набора глифов, необходимых для отрисовки указанного
String:- Если аргументом является
String, то текущий атрибутFontв контекстеGraphics2Dзапрашивается для преобразования символов Юникода вStringв набор глифов для представления с любыми базовыми алгоритмами выравнивания и формирования, которые реализует шрифт. - Если аргументом является
AttributedCharacterIterator, итератор запрашивается для преобразования себя вTextLayoutс использованием встроенных атрибутов шрифта.TextLayoutреализует более сложные алгоритмы выравнивания глифов, которые автоматически выполняют корректировки выравнивания Юникода для множественных шрифтов с разными направлениями письма. - Если аргументом является
GlyphVector, то объектGlyphVectorуже содержит соответствующие глифы шрифта со явными координатами для позиции каждого глифа.
- Если аргументом является
- Текущий
Fontзапрашивается для получения контуров указанных глифов. Эти контуры рассматриваются как фигуры в пространстве пользователя относительно позиции каждого глифа, определённой на шаге 1. - Контуры символов заполняются, как указано выше в разделе
Shapeоперации. - Текущий
Paintзапрашивается для получения объектаPaintContext, который определяет цвета для отрисовки в пространстве устройства.
- Следующие шаги используются для определения набора глифов, необходимых для отрисовки указанного
-
Imageоперации- Область интереса определяется границами рамки исходного
Image. Эта рамка задаётся в пространстве изображения, которое является локальной системой координат объектаImage. - Если
AffineTransformпередаётся вdrawImage(Image, AffineTransform, ImageObserver), тоAffineTransformиспользуется для преобразования рамки из пространства изображения в пространство пользователя. ЕслиAffineTransformне указан, рамка обрабатывается как уже находящаяся в пространстве пользователя. - Рамка исходного
Imageпреобразуется из пространства пользователя в пространство устройства с использованием текущегоTransform. Обратите внимание, что результат преобразования рамки необязательно приводит к прямоугольной области в пространстве устройства. - Объект
Imageопределяет цвета для отрисовки, сэмплированные в соответствии с отображением координат источника на координаты назначения, указанным текущимTransformи, необязательным, преобразованием изображения.
- Область интереса определяется границами рамки исходного
Атрибуты отрисовки по умолчанию
Значения по умолчанию для атрибутов отрисовкиGraphics2D: -
Paint - Цвет
Component. -
Font FontComponent.-
Stroke - Квадратная ручка с шириной линии 1, без пунктира, соединениями сегментов типа срез и квадратными концами.
-
Transform - Объект
getDefaultTransformдляGraphicsConfigurationComponent. -
Composite - Правило
AlphaComposite.SRC_OVER. -
Clip - Нет операций
Clip, вывод обрезается доComponent.
Проблемы совместимости отрисовки
Модель отрисовки JDK(tm) 1.1 основана на модели пикселизации, которая определяет, что координаты являются бесконечно тонкими, лежащими между пикселями. Операции рисования выполняются с помощью пера шириной в один пиксель, заполняющего пиксель ниже и справа от точки привязки на траектории. Модель отрисовки JDK 1.1 согласуется со способностями большинства существующих платформ рендеринга, которые должны решать целочисленные координаты до дискретного пера, которое должно полностью находиться на заданном количестве пикселей. API Java 2D(tm) (Java(tm) 2 platform) поддерживает обработку сглаживания. Перо шириной в один пиксель не обязательно должно полностью лежать на пикселе N, в отличие от пикселя N+1. Перо может частично лежать на обоих пикселях. Не нужно выбирать направление смещения для широкого пера, так как смешивание, происходящее вдоль краёв траектории пера, делает положение подпикселей пера видимым для пользователя. С другой стороны, при отключении сглаживания путём установки ключа KEY_ANTIALIASING в значение VALUE_ANTIALIAS_OFF, рендерер, возможно, должен применить смещение для определения пикселя, который следует изменить, когда перо пересекает границу пикселя, например, когда оно рисуется вдоль целой координаты в пространстве устройства. Хотя возможности рендеринга со сглаживанием делают необязательным для модели рендеринга указание смещения для пера, желательно, чтобы рендереры со сглаживанием и без него выполнялись аналогично в распространённых случаях рисования горизонтальных и вертикальных линий шириной в один пиксель на экране. Для того чтобы включение сглаживания путём установки ключа KEY_ANTIALIASING в значение VALUE_ANTIALIAS_ON не приводило к внезапному увеличению ширины таких линий вдвое и уменьшению их непрозрачности вдвое, желательно, чтобы модель определяла траекторию для таких линий, чтобы они полностью покрывали определённый набор пикселей для повышения их чёткости.
Java 2D API сохраняет совместимость с поведением рендеринга JDK 1.1, так что поведение старых операций и существующих рендереров не меняется в API Java 2D. Определены старые методы, которые отображаются на общие draw и fill методы, что чётко показывает, как Graphics2D расширяет Graphics на основе настроек Stroke и Transform атрибутов и параметров рендеринга. Определение выполняется идентично в стандартных настройках атрибутов. Например, стандартный Stroke представляет собой BasicStroke шириной 1 без пунктирной линии, а стандартный преобразование для рисования на экране — это тождественное преобразование.
Следующие два правила обеспечивают предсказуемое поведение рендеринга как при использовании сглаживания, так и без него.
- Координаты устройства определены как расположенные между пикселями устройства, что предотвращает несоответствия между рендерингом со сглаживанием и без него. Если бы координаты были определены в центре пикселя, некоторые пиксели, покрываемые фигурой, такой как прямоугольник, были бы покрыты только наполовину. При рендеринге без сглаживания такие наполовину покрытые пиксели либо отображались бы внутри фигуры, либо за её пределами. При рендеринге со сглаживанием пиксели по всей границе фигуры были бы покрыты наполовину. С другой стороны, так как координаты определены как расположенные между пикселями, фигура, такая как прямоугольник, не будет иметь наполовину покрытых пикселей, независимо от того, используется ли для её рендеринга сглаживание.
- Линии и контуры, нарисованные с помощью объекта
BasicStroke, могут быть «нормализованы» для обеспечения согласованного рендеринга контуров при размещении в различных точках рисуемого объекта и при рисовании со сглаживанием или без него. Этот процесс нормализации контролируется параметромKEY_STROKE_CONTROL. Точный алгоритм нормализации не указан, но цели этой нормализации заключаются в том, чтобы обеспечить согласованный визуальный вид линий независимо от того, как они попадают на сетку пикселей, и способствовать более чётким горизонтальным и вертикальным линиям в режиме сглаживания, чтобы они больше напоминали свои аналоги без сглаживания. Типичный шаг нормализации может включать перемещение конечных точек сглаженных линий в центры пикселей для уменьшения смешивания или корректировку положения подпикселей линий без сглаживания таким образом, чтобы ширина линий с плавающей точкой округлялась до чётного или нечётного количества пикселей с равной вероятностью. Этот процесс может сдвигать конечные точки на полпикселя (обычно в сторону положительной бесконечности по обеим осям) для обеспечения этих согласованных результатов.
Следующие определения общих старых методов выполняют идентично ранее указанному поведению при стандартных настройках атрибутов:
- Для операций
fill, включаяfillRect,fillRoundRect,fillOval,fillArc,fillPolygonиclearRect,fillтеперь можно вызвать с нужнымShape. Например, при заливке прямоугольника вызываетсяfill(new Rectangle(x, y, w, h));
. - Аналогично, для операций рисования, включая
drawLine,drawRect,drawRoundRect,drawOval,drawArc,drawPolylineиdrawPolygon,drawтеперь можно вызвать с нужнымShape. Например, при рисовании прямоугольника вызываетсяdraw(new Rectangle(x, y, w, h));
. - Методы
draw3DRectиfill3DRectбыли реализованы с помощью методовdrawLineиfillRectв классеGraphics, что определяло их поведение на основе текущих объектовStrokeиPaintв контекстеGraphics2D. Этот класс перезаписывает эти реализации версиями, которые используют только текущий объектColor, перезаписывая текущий объектPaintи используетfillRectдля описания точно такого же поведения, как у существующих методов, независимо от настройки текущегоStroke.
Graphics определяет только метод setColor для управления цветом, который будет нанесён. Поскольку API Java 2D расширяет объект Color для реализации нового интерфейса Paint, существующий метод setColor теперь является удобным методом для установки текущего атрибута Paint в объект Color. setColor(c) эквивалентно setPaint(c). Класс Graphics определяет два метода для управления тем, как цвета применяются к получателю.
- Метод
setPaintModeреализован как удобный метод для установки стандартногоComposite, эквивалентногоsetComposite(new AlphaComposite.SrcOver). - Метод
setXORMode(Color xorcolor)реализован как удобный метод для установки специального объектаComposite, который игнорирует компонентыAlphaисходных цветов и устанавливает цвет получателя в значение:dstpixel = (PixelOf(srccolor) ^ PixelOf(xorcolor) ^ dstpixel);
.
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт новый объект Graphics2D. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract void |
addRenderingHints |
Устанавливает значения произвольного количества предпочтений для алгоритмов отрисовки. |
abstract void |
clip |
Пересекает текущую Clip с внутренностью указанной Shape и устанавливает Clip в полученное пересечение. |
abstract void |
draw |
Отображает контур Shape, используя настройки текущего контекста Graphics2D. |
void |
draw3DRect |
Рисует 3D выделенный контур указанного прямоугольника. |
abstract void |
drawGlyphVector |
Отображает текст указанного GlyphVector, используя атрибуты отрисовки контекста Graphics2D. |
abstract void |
drawImage |
Отображает BufferedImage, отфильтрованный с помощью BufferedImageOp. |
abstract boolean |
drawImage |
Отображает изображение, применяя преобразование из пространства изображения в пространство пользователя перед отрисовкой. |
abstract void |
drawRenderableImage |
Отображает RenderableImage, применяя преобразование из пространства изображения в пространство пользователя перед отрисовкой. |
abstract void |
drawRenderedImage |
Отображает RenderedImage, применяя преобразование из пространства изображения в пространство пользователя перед отрисовкой. |
abstract void |
drawString |
Отображает текст, заданный указанным String, используя текущее состояние атрибутов текста в контексте Graphics2D. |
abstract void |
drawString |
Отображает текст указанного String, используя текущее состояние атрибутов текста в контексте Graphics2D. |
abstract void |
drawString |
Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса TextAttribute. |
abstract void |
drawString |
Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса TextAttribute. |
abstract void |
fill |
Заливает внутренность Shape, используя настройки контекста Graphics2D. |
void |
fill3DRect |
Окрашивает 3D выделенный прямоугольник, заполненный текущим цветом. |
abstract Color |
getBackground() |
Возвращает цвет фона, используемый для очистки области. |
abstract Composite |
getComposite() |
Возвращает текущий Composite в контексте Graphics2D. |
abstract GraphicsConfiguration |
getDeviceConfiguration() |
Возвращает конфигурацию устройства, связанную с этим Graphics2D. |
abstract FontRenderContext |
getFontRenderContext() |
Получает контекст отрисовки Font в этом контексте Graphics2D. |
abstract Paint |
getPaint() |
Возвращает текущее Paint контекста Graphics2D. |
abstract Object |
getRenderingHint |
Возвращает значение одного предпочтения для алгоритмов отрисовки. |
abstract RenderingHints |
getRenderingHints() |
Получает предпочтения для алгоритмов отрисовки. |
abstract Stroke |
getStroke() |
Возвращает текущий Stroke в контексте Graphics2D. |
abstract AffineTransform |
getTransform() |
Возвращает копию текущего Transform в контексте Graphics2D. |
abstract boolean |
hit |
Проверяет, пересекается ли указанное Shape с указанным Rectangle, который находится в пространстве устройства. |
abstract void |
rotate |
Конкатенирует текущее Graphics2D Transform с преобразованием поворота. |
abstract void |
rotate |
Конкатенирует текущее Graphics2D Transform с преобразованным поворотом. |
abstract void |
scale |
Конкатенирует текущее Graphics2D Transform со масштабирующим преобразованием. Последующая отрисовка изменяет размер в соответствии с заданными коэффициентами масштабирования по отношению к предыдущему масштабированию. |
abstract void |
setBackground |
Устанавливает цвет фона для контекста Graphics2D. |
abstract void |
setComposite |
Устанавливает Composite для контекста Graphics2D. |
abstract void |
setPaint |
Устанавливает атрибут Paint для контекста Graphics2D. |
abstract void |
setRenderingHint |
Устанавливает значение одного предпочтения для алгоритмов отрисовки. |
abstract void |
setRenderingHints |
Заменяет значения всех предпочтений для алгоритмов отрисовки на указанные hints. |
abstract void |
setStroke |
Устанавливает Stroke для контекста Graphics2D. |
abstract void |
setTransform |
Перезаписывает преобразование в контексте Graphics2D. |
abstract void |
shear |
Конкатенирует текущее Graphics2D Transform с преобразованием сдвига. |
abstract void |
transform |
Создаёт объект AffineTransform с Transform в этом контексте Graphics2D в соответствии с правилом «последнее указанное — первое применяемое». |
abstract void |
translate |
Конкатенирует текущее Graphics2D Transform с преобразованием перемещения. |
abstract void |
translate |
Перемещает начало координат контекста Graphics2D в точку (x, y) в текущей системе координат. |
Методы, объявленные в классе java.awt.Graphics
clearRect, clipRect, copyArea, create, create, dispose, drawArc, drawBytes, drawChars, drawImage, drawImage, drawImage, drawImage, drawImage, drawImage, drawLine, drawOval, drawPolygon, drawPolygon, drawPolyline, drawRect, drawRoundRect, fillArc, fillOval, fillPolygon, fillPolygon, fillRect, fillRoundRect, finalize, getClip, getClipBounds, getClipBounds, getClipRect, getColor, getFont, getFontMetrics, getFontMetrics, hitClip, setClip, setClip, setColor, setFont, setPaintMode, setXORMode, toString
Подробное описание конструкторов
Graphics2D
protected Graphics2D()
Graphics2D. Поскольку Graphics2D является абстрактным классом и должен быть настроен подклассами для разных устройств вывода, объекты Graphics2D не могут быть созданы напрямую. Вместо этого объекты Graphics2D должны быть получены из другого объекта Graphics2D, созданного объектом Component, или получены из изображений, таких как объекты BufferedImage.- См. также:
Подробное описание методов
draw3DRect
public void draw3DRect(int x, int y, int width, int height, boolean raised)
Цвета, используемые для эффекта выделения, определяются на основе текущего цвета. Результирующий прямоугольник занимает область, которая имеет ширину width + 1 пикселя и высоту height + 1 пикселя. Этот метод использует исключительно текущий Color и игнорирует текущий Paint.
- Переопределяет:
-
draw3DRectв классеGraphics - Параметры:
-
x- координата x прямоугольника, который необходимо нарисовать. -
y- координата y прямоугольника, который необходимо нарисовать. -
width- ширина прямоугольника, который необходимо нарисовать. -
height- высота прямоугольника, который необходимо нарисовать. -
raised- булево значение, определяющее, кажется ли прямоугольник поднятым над поверхностью или опущенным в поверхность. - См. также:
fill3DRect
public void fill3DRect(int x, int y, int width, int height, boolean raised)
Color. Этот метод использует исключительно текущий Color и игнорирует текущий Paint.- Переопределяет:
-
fill3DRectв классеGraphics - Параметры:
-
x- координата x прямоугольника, который необходимо заполнить. -
y- координата y прямоугольника, который необходимо заполнить. -
width- ширина прямоугольника, который необходимо заполнить. -
height- высота прямоугольника, который необходимо заполнить. -
raised- булево значение, определяющее, кажется ли прямоугольник поднятым над поверхностью или врезанным в поверхность. - См. также:
draw
public abstract void draw(Shape s)
Shape используя настройки текущего контекста Graphics2D. Применяемые атрибуты рендеринга включают в себя атрибуты Clip, Transform, Paint, Composite и Stroke.- Параметры:
-
s-Shapeдля отрисовки - См. также:
drawImage
public abstract boolean drawImage(Image img, AffineTransform xform, ImageObserver obs)
Transform в Graphics2D. Указанное преобразование применяется к изображению перед применением атрибута преобразования в контексте Graphics2D. Применяемые атрибуты рендеринга включают в себя атрибуты Clip, Transform и Composite. Обратите внимание, что отрисовка не выполняется, если заданное преобразование не обратимо.- Параметры:
-
img- указанное изображение для отрисовки. Этот метод ничего не делает, еслиimgравно null. -
xform- преобразование из пространства изображения в пространство пользователя -
obs-ImageObserver, которому следует сообщать о том, как больше частиImageпреобразуются - Возвращает:
-
true, еслиImageполностью загружено и полностью отображено, или если оно равно null;false, еслиImageвсё ещё загружается. - См. также:
drawImage
public abstract void drawImage(BufferedImage img, BufferedImageOp op, int x, int y)
BufferedImage, отфильтрованный с помощью BufferedImageOp. Применяемые атрибуты рендеринга включают в себя атрибуты Clip, Transform и Composite. Это эквивалентно: img1 = op.filter(img, null); drawImage(img1, new AffineTransform(1f,0f,0f,1f,x,y), null);
- Параметры:
-
img- указанноеBufferedImageдля отрисовки. Этот метод ничего не делает, еслиimgравно null. -
op- фильтр, который будет применён к изображению перед отрисовкой -
x- координата x расположения в пространстве пользователя, где отображается верхний левый угол изображения -
y- координата y расположения в пространстве пользователя, где отображается верхний левый угол изображения - См. также:
drawRenderedImage
public abstract void drawRenderedImage(RenderedImage img, AffineTransform xform)
RenderedImage, применяя преобразование из пространства изображения в пространство пользователя перед отрисовкой. Преобразование из пространства пользователя в пространство устройства выполняется с помощью текущего Transform в Graphics2D. Указанное преобразование применяется к изображению перед применением атрибута преобразования в контексте Graphics2D. Применяемые атрибуты рендеринга включают в себя атрибуты Clip, Transform и Composite. Обратите внимание, что отрисовка не выполняется, если заданное преобразование не обратимо.- Параметры:
-
img- изображение для отрисовки. Этот метод ничего не делает, еслиimgравно null. -
xform- преобразование из пространства изображения в пространство пользователя - См. также:
drawRenderableImage
public abstract void drawRenderableImage(RenderableImage img, AffineTransform xform)
RenderableImage, применяя преобразование из пространства изображения в пространство пользователя перед отрисовкой. Преобразование из пространства пользователя в пространство устройства выполняется с текущим Transform в контексте Graphics2D. Указанное преобразование применяется к изображению до применения атрибута преобразования в контексте Graphics2D. Применяемые атрибуты рендеринга включают в себя атрибуты Clip, Transform и Composite. Обратите внимание, что отрисовка не выполняется, если указанное преобразование необратимо. Свойства рендеринга, заданные для объекта Graphics2D, могут использоваться при рендеринге RenderableImage. Если требуется явный контроль над конкретными свойствами, распознаваемыми конкретным RenderableImage, или если необходимо знать, какие свойства используются, то объект RenderedImage должен быть получен непосредственно из RenderableImage и отрисован с помощью drawRenderedImage.
- Параметры:
-
img- изображение, подлежащее рендерингу. Этот метод ничего не делает, еслиimgравно null. -
xform- преобразование из пространства изображения в пространство пользователя - См. также:
drawString
public abstract void drawString(String str, int x, int y)
String, используя текущее состояние атрибутов текста в контексте Graphics2D. Базовая линия первого символа находится в позиции (x, y) в пространстве пользователя. Применяемые атрибуты рендеринга включают в себя атрибуты Clip, Transform, Paint, Font и Composite. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанная координата обозначает позицию самого левого символа на базовой линии.- Определено в:
-
drawStringв классеGraphics - Параметры:
-
str- строка, подлежащая отображению -
x- координата x расположения, где должен быть отображенString -
y- координата y расположения, где должен быть отображенString - Исключения:
-
NullPointerException- еслиstrравноnull - С:
- 1.0
- См. также:
drawString
public abstract void drawString(String str, float x, float y)
String, используя текущее состояние атрибутов текста в контексте Graphics2D. Базовая линия первого символа находится в позиции (x, y) в пространстве пользователя. Применяемые атрибуты рендеринга включают в себя атрибуты Clip, Transform, Paint, Font и Composite. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанная координата обозначает позицию самого левого символа на базовой линии.- Параметры:
-
str- отображаемаяString -
x- координата x расположения, где должен быть отображенString -
y- координата y расположения, где должен быть отображенString - Исключения:
-
NullPointerException- еслиstrравноnull - См. также:
drawString
public abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
TextAttribute. Базовая линия первого символа находится в позиции (x, y) в пространстве пользователя. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанная координата обозначает позицию самого левого символа на базовой линии.
- Определено в:
-
drawStringв классеGraphics - Параметры:
-
iterator- итератор, текст которого необходимо отобразить -
x- координата x, где отображается текст итератора -
y- координата y, где отображается текст итератора - Исключения:
-
NullPointerException- еслиiteratorравноnull - См. также:
drawString
public abstract void drawString(AttributedCharacterIterator iterator, float x, float y)
TextAttribute. Базовая линия первого символа находится в позиции (x, y) в пространстве пользователя. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанная координата обозначает позицию самого левого символа на базовой линии.
- Параметры:
-
iterator- итератор, текст которого необходимо отобразить -
x- координата x, где отображается текст итератора -
y- координата y, где отображается текст итератора - Исключения:
-
NullPointerException- еслиiteratorравноnull - См. также:
drawGlyphVector
public abstract void drawGlyphVector(GlyphVector g, float x, float y)
GlyphVector используя атрибуты рендеринга контекста Graphics2D. Применяемые атрибуты рендеринга включают в себя Clip, Transform, Paint и Composite. GlyphVector задает отдельные глифы из Font. GlyphVector также может содержать позиции глифов. Это самый быстрый способ отобразить набор символов на экране.- Параметры:
-
g- отображаемыйGlyphVector -
x- позиция x в пространстве пользователя, где должны быть отображены глифы -
y- позиция y в пространстве пользователя, где должны быть отображены глифы - Исключения:
-
NullPointerException- еслиgравноnull. - См. также:
Заполнение
public abstract void fill(Shape s)
Shape, используя настройки контекста Graphics2D. Применяемые атрибуты отрисовки включают Clip, Transform, Paint и Composite.- Параметры:
-
s- заполняемаяShape - См. также:
hit
public abstract boolean hit(Rectangle rect, Shape s, boolean onStroke)
Shape с заданным прямоугольником Rectangle, который находится в пространстве устройства. Если onStroke равно false, этот метод проверяет, пересекается ли внутренняя область указанной Shape с указанным Rectangle. Если onStroke равно true, этот метод проверяет, пересекается ли Stroke контура указанной Shape с указанным Rectangle. Учитываются атрибуты отрисовки, включая атрибуты Clip, Transform и Stroke.- Параметры:
-
rect- область в пространстве устройства для проверки на попадание -
s-Shapeдля проверки на попадание -
onStroke- флаг, используемый для выбора между проверкой обведенной или заполненной формы. Если флаг равенtrue, проверяется контурStroke. Если флаг равенfalse, проверяется заполненнаяShape. - Возвращает:
-
true, если есть попадание;falseв противном случае. - См. также:
getDeviceConfiguration
public abstract GraphicsConfiguration getDeviceConfiguration()
Graphics2D.- Возвращает:
- конфигурацию устройства для этого
Graphics2D.
setComposite
public abstract void setComposite(Composite comp)
Composite для контекста Graphics2D. Composite используется во всех методах рисования, таких как drawImage, drawString, draw и fill. Он определяет, как новые пиксели комбинируются с существующими пикселями на устройстве графики во время процесса отрисовки.- Параметры:
-
comp- объектComposite, который используется для отрисовки - См. также:
setPaint
public abstract void setPaint(Paint paint)
Paint для контекста Graphics2D. Вызов этого метода с объектом null Paint не оказывает никакого влияния на текущий атрибут Paint этого Graphics2D.- Параметры:
-
paint- объектPaint, используемый для генерации цвета во время отрисовки, илиnull - См. также:
setStroke
public abstract void setStroke(Stroke s)
Stroke для контекста Graphics2D.- Параметры:
-
s- объектStroke, используемый для обводкиShapeво время отрисовки - См. также:
setRenderingHint
public abstract void setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
RenderingHints для определений некоторых общих ключей и значений.- Параметры:
-
hintKey- ключ настраиваемого параметра. -
hintValue- значение, указывающее предпочтения для указанной категории подсказок. - См. также:
getRenderingHint
public abstract Object getRenderingHint(RenderingHints.Key hintKey)
RenderingHints для определений некоторых общих ключей и значений.- Параметры:
-
hintKey- ключ, соответствующий искомому параметру. - Возвращает:
- объект, представляющий значение для указанного ключа параметра. Некоторые ключи и связанные с ними значения определены в классе
RenderingHints. - См. также:
setRenderingHints
public abstract void setRenderingHints(Map<?,?> hints)
hints. Существующие значения всех параметров отрисовки отбрасываются, а новый набор известных параметров и значений инициализируется из указанного объекта Map. Категории подсказок включают элементы управления качеством отрисовки и общим балансом времени/качества в процессе отрисовки. Обратитесь к классу RenderingHints для определений некоторых общих ключей и значений.- Параметры:
-
hints- параметры отрисовки, которые нужно установить - См. также:
addRenderingHints
public abstract void addRenderingHints(Map<?,?> hints)
Map, изменяются. Все остальные предпочтения, отсутствующие в указанном объекте, остаются неизменными. Категории подсказок включают элементы управления качеством отрисовки и общим балансом времени/качества в процессе отрисовки. Обратитесь к классу RenderingHints для определений некоторых общих ключей и значений.- Параметры:
-
hints- настраиваемые параметры отрисовки - См. также:
getRenderingHints
public abstract RenderingHints getRenderingHints()
RenderingHints для определений некоторых общих ключей и значений.- Возвращает:
- ссылку на экземпляр
RenderingHints, содержащий текущие предпочтения. - См. также:
translate
public abstract void translate(int x, int y)
Graphics2D в точку (x, y) в текущей системе координат. Изменяет контекст Graphics2D, так что его новое начало координат соответствует точке (x, y) в прежней системе координат контекста Graphics2D. Все координаты, используемые в последующих операциях отрисовки в этом графическом контексте, будут относиться к этому новому началу координат.translate
public abstract void translate(double tx, double ty)
Graphics2D Transform с преобразованием сдвига. Последующая отрисовка будет смещена на указанное расстояние относительно предыдущего положения. Это эквивалентно вызову transform(T), где T — преобразование AffineTransform, представленное следующей матрицей:
[ 1 0 tx ]
[ 0 1 ty ]
[ 0 0 1 ]
- Parameters:
-
tx- расстояние смещения по оси x -
ty- расстояние смещения по оси y
rotate
public abstract void rotate(double theta)
Graphics2D Transform с поворотом. Последующая отрисовка будет повернута на указанные радианы относительно предыдущего начала координат. Это эквивалентно вызову transform(R), где R — преобразование AffineTransform, представленное следующей матрицей:
[ cos(theta) -sin(theta) 0 ]
[ sin(theta) cos(theta) 0 ]
[ 0 0 1 ]
Поворот с положительным углом theta поворачивает точки на положительной оси x к положительной оси y.- Parameters:
-
theta- угол поворота в радианах
rotate
public abstract void rotate(double theta, double x, double y)
Graphics2D Transform с преобразованием смещенного поворота. Последующая отрисовка преобразуется с помощью преобразования, которое строится путем сдвига в указанную точку, поворота на указанные радианы и сдвига назад на ту же величину, что и исходный сдвиг. Это эквивалентно следующей последовательности вызовов:
translate(x, y);
rotate(theta);
translate(-x, -y);
Поворот с положительным углом theta поворачивает точки на положительной оси x к положительной оси y.- Parameters:
-
theta- угол поворота в радианах -
x- координата x начала поворота -
y- координата y начала поворота
scale
public abstract void scale(double sx, double sy)
Graphics2D Transform с преобразованием масштабирования. Последующая отрисовка изменяет размер в соответствии с указанными коэффициентами масштабирования относительно предыдущего масштабирования. Это эквивалентно вызову transform(S), где S — преобразование AffineTransform, представленное следующей матрицей:
[ sx 0 0 ]
[ 0 sy 0 ]
[ 0 0 1 ]
- Parameters:
-
sx- коэффициент, на который умножаются координаты X в последующих операциях отрисовки относительно предыдущих операций отрисовки. -
sy- коэффициент, на который умножаются координаты Y в последующих операциях отрисовки относительно предыдущих операций отрисовки.
shear
public abstract void shear(double shx, double shy)
Graphics2D Transform с преобразованием сдвига. Последующая отрисовка сдвигается на указанный множитель относительно предыдущего положения. Это эквивалентно вызову transform(SH), где SH — преобразование AffineTransform, представленное следующей матрицей:
[ 1 shx 0 ]
[ shy 1 0 ]
[ 0 0 1 ]
- Parameters:
-
shx- множитель, на который координаты смещаются в положительном направлении оси X в зависимости от их координаты Y -
shy- множитель, на который координаты смещаются в положительном направлении оси Y в зависимости от их координаты X
transform
public abstract void transform(AffineTransform Tx)
AffineTransform с преобразованием Transform в этом контексте Graphics2D в соответствии с правилом «последнее указанное — применяется первым». Если текущее преобразование — Cx, результат композиции с Tx — новое преобразование Cx'. Cx' становится текущим преобразованием Transform для этого контекста Graphics2D. Преобразование точки p обновлённым преобразованием Cx' эквивалентно преобразованию p с помощью Tx, а затем преобразованию результата с помощью исходного преобразования Cx. Другими словами, Cx'(p) = Cx(Tx(p)). Копия Tx создается при необходимости, поэтому дальнейшие изменения в Tx не влияют на отрисовку.- Parameters:
-
Tx- объектAffineTransform, который нужно составить с текущим преобразованиемTransform - See Also:
setTransform
public abstract void setTransform(AffineTransform Tx)
Graphics2D. ВНИМАНИЕ: Этот метод никогда не следует использовать для применения нового преобразования координат поверх существующего преобразования, потому что контекст Graphics2D может уже содержать преобразование, необходимое для других целей, таких как отрисовка компонентов Swing или применение преобразования масштабирования для адаптации к разрешению принтера. Чтобы добавить преобразование координат, используйте методы transform, rotate, scale или shear. Метод setTransform предназначен только для восстановления исходного преобразования Graphics2D после отрисовки, как показано в этом примере:
// Get the current transform AffineTransform saveAT = g2.getTransform(); // Perform transformation g2d.transform(...); // Render g2d.draw(...); // Restore original transform g2d.setTransform(saveAT);
- Parameters:
-
Tx-AffineTransform, полученное из методаgetTransform - See Also:
getTransform
public abstract AffineTransform getTransform()
Transform в контексте Graphics2D.- Returns:
- текущее преобразование
AffineTransformв контекстеGraphics2D. - See Also:
getPaint
public abstract Paint getPaint()
Paint контекста Graphics2D.- Returns:
- текущая заливка
Graphics2D Paint, определяющая цвет или узор. - See Also:
getComposite
public abstract Composite getComposite()
Composite в контексте Graphics2D.- Returns:
- текущий режим наложения
Graphics2D Composite, определяющий стиль наложения. - See Also:
setBackground
public abstract void setBackground(Color color)
Graphics2D. Цвет фона используется для очистки области. Когда контекст Graphics2D создаётся для Component, цвет фона наследуется от Component. Установка цвета фона в контексте Graphics2D влияет только на последующие вызовы clearRect, а не на цвет фона самого контекста Component. Чтобы изменить фон Component, используйте соответствующие методы Component.- Parameters:
-
color- цвет фона, используемый в последующих вызовахclearRect - See Also:
getBackground
public abstract Color getBackground()
- Returns:
- текущий цвет фона
Graphics2D Color. - See Also:
getStroke
public abstract Stroke getStroke()
Stroke в контексте Graphics2D.- Returns:
- текущий стиль линии
Graphics2D Stroke. - See Also:
clip
public abstract void clip(Shape s)
Clip с внутренностью указанной Shape и устанавливает Clip в результате пересечения. Указанная Shape преобразуется с помощью текущего Graphics2D Transform перед пересечением с текущим Clip. Этот метод используется для уменьшения текущего Clip. Чтобы увеличить Clip, используйте setClip. Клип пользователя, изменённый этим методом, не зависит от обрезки, связанной с границами устройства и видимостью. Если клип ранее не был установлен или был очищен с помощью setClip с аргументом null, указанная Shape становится новым клипом пользователя.
Поскольку этот метод пересекает указанную фигуру с текущим клипом, он выбросит NullPointerException для фигуры null, если клип пользователя также не null. Поэтому вызов этого метода с аргументом null не рекомендуется.
- Parameters:
-
s-Shape, пересекающаяся с текущимClip. Этот метод обновляет текущийClip. - Throws:
-
NullPointerException- еслиsявляетсяnullи клип пользователя в настоящее время установлен.
getFontRenderContext
public abstract FontRenderContext getFontRenderContext()
Font в этом контексте Graphics2D. FontRenderContext содержит служебные подсказки приложения, такие как антиалиасинг и дробные метрики, а также информацию о целевом устройстве, такую как точки на дюйм. Эта информация должна предоставляться приложением при использовании объектов, выполняющих типографическое форматирование, таких как Font и TextLayout. Эта информация также должна предоставляться приложениями, которые выполняют собственное форматирование и нуждаются в точных измерениях различных характеристик глифов, таких как отступ и высота строки, когда к рендерингу текста применяются различные параметры рендеринга.- Returns:
- ссылка на экземпляр FontRenderContext.
- Since:
- 1.2
- See Also:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/Graphics2D.html