Класс 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) поддерживает рендеринг с антиалиасингом. Перо шириной в один пиксель не обязательно должно полностью попадать на пиксель 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 без пунктирной линии, а по умолчанию Transform для рисования на экране — это Identity transform.
Следующие два правила обеспечивают предсказуемое поведение рендеринга, независимо от того, используется ли алиасинг или антиалиасинг.
- Координаты устройства определяются как находящиеся между пикселями устройства, что предотвращает несогласованность результатов между рендерингом с алиасингом и с антиалиасингом. Если бы координаты определялись в центре пикселя, некоторые пиксели, покрываемые фигурой, такой как прямоугольник, были бы покрыты только наполовину. При рендеринге с алиасингом полупокрытые пиксели либо отображались бы внутри фигуры, либо вне её. При рендеринге с антиалиасингом пиксели по всему краю фигуры были бы полупокрыты. С другой стороны, поскольку координаты определяются как находящиеся между пикселями, у фигуры, такой как прямоугольник, не будет полупокрытых пикселей, независимо от того, используется ли для рендеринга антиалиасинг.
- Линии и пути, проведённые с помощью объекта
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.
- Parameters:
-
img- изображение для отрисовки. Этот метод ничего не делает, еслиimgравно null. -
xform- преобразование из пространства изображения в пространство пользователя - See Also:
drawString
public abstract void drawString(String str, int x, int y)
String, используя текущее состояние атрибутов текста в контексте Graphics2D. Линия основания первого символа находится в позиции (x, y) в пространстве пользователя. Применяемые атрибуты отрисовки включают в себя Clip, Transform, Paint, Font и Composite атрибуты. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанные координаты соответствуют положению самого левого символа на линии основания.- Specified by:
-
drawStringв классеGraphics - Parameters:
-
str- строка для отрисовки -
x- координата x местоположения, где должна быть отрисованаString -
y- координата y местоположения, где должна быть отрисованаString - Throws:
-
NullPointerException- еслиstrравенnull - Since:
- 1.0
- See Also:
drawString
public abstract void drawString(String str, float x, float y)
String, используя текущее состояние атрибутов текста в контексте Graphics2D. Линия основания первого символа находится в позиции (x, y) в пространстве пользователя. Применяемые атрибуты отрисовки включают в себя Clip, Transform, Paint, Font и Composite атрибуты. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанные координаты соответствуют положению самого левого символа на линии основания.- Parameters:
-
str-Stringдля отрисовки -
x- координата x местоположения, где должна быть отрисованаString -
y- координата y местоположения, где должна быть отрисованаString - Throws:
-
NullPointerException- еслиstrравенnull - See Also:
drawString
public abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
TextAttribute. Линия основания первого символа находится в позиции (x, y) в пространстве пользователя. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанные координаты соответствуют положению самого левого символа на линии основания.
- Specified by:
-
drawStringв классеGraphics - Parameters:
-
iterator- итератор, текст которого необходимо отобразить -
x- координата x, где отображается текст итератора -
y- координата y, где отображается текст итератора - Throws:
-
NullPointerException- еслиiteratorравенnull - See Also:
drawString
public abstract void drawString(AttributedCharacterIterator iterator, float x, float y)
TextAttribute. Линия основания первого символа находится в позиции (x, y) в пространстве пользователя. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанные координаты соответствуют положению самого левого символа на линии основания.
- Parameters:
-
iterator- итератор, текст которого необходимо отобразить -
x- координата x, где отображается текст итератора -
y- координата y, где отображается текст итератора - Throws:
-
NullPointerException- еслиiteratorравенnull - See Also:
drawGlyphVector
public abstract void drawGlyphVector(GlyphVector g, float x, float y)
GlyphVector, используя атрибуты отрисовки контекста Graphics2D. Применяемые атрибуты отрисовки включают в себя Clip, Transform, Paint и Composite атрибуты. GlyphVector задаёт отдельные глифы из Font. GlyphVector также может содержать позиции глифов. Это самый быстрый способ отображения набора символов на экране.- Parameters:
-
g-GlyphVectorдля отрисовки -
x- позиция x в пространстве пользователя, где должны быть отображены глифы -
y- позиция y в пространстве пользователя, где должны быть отображены глифы - Throws:
-
NullPointerException- еслиgравноnull. - See Also:
заливка
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 ложно, этот метод проверяет, пересекается ли внутренняя часть указанной Shape с указанным Rectangle. Если onStroke равно true, этот метод проверяет, пересекается ли контур указанной 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. Он определяет, как новые пиксели объединяются с существующими пикселями на устройстве графики во время процесса отрисовки. Если этот контекст Graphics2D рисует на Component на экране дисплея, и Composite является пользовательским объектом, а не экземпляром класса AlphaComposite, и если установлено управление безопасностью, вызывается его метод checkPermission с разрешением AWTPermission("readDisplayPixels").
- Параметры:
-
comp- объектComposite, используемый для отрисовки - Исключения:
-
SecurityException- если пользовательский объектCompositeиспользуется для отрисовки на экране, и установлено управление безопасностью, и его методcheckPermissionне разрешает операцию. - См. также:
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)
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в классеGraphics - Параметры:
-
x- указанная координата x -
y- указанная координата y - С:
- 1.0
translate
public abstract void translate(double tx, double ty)
Graphics2D Transform с трансформирующей смещения. Последующая отрисовка перемещается на указанное расстояние относительно предыдущего положения. Это эквивалентно вызову transform(T), где T - AffineTransform, представленная следующей матрицей:
[ 1 0 tx ]
[ 0 1 ty ]
[ 0 0 1 ]
- Параметры:
-
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.- Параметры:
-
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.- Параметры:
-
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 ]
- Параметры:
-
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 ]
- Параметры:
-
shx- множитель, на который координаты смещаются в положительном направлении оси X в зависимости от их координаты Y -
shy- множитель, на который координаты смещаются в положительном направлении оси Y в зависимости от их координаты X
transform
public abstract void transform(AffineTransform Tx)
AffineTransform с Transform в этом Graphics2D в соответствии с правилом последнего указанного - первого примененного. Если текущая Transform - Cx, результат составления с Tx - новая Transform Cx'. Cx' становится текущей Transform для этого Graphics2D. Преобразование точки p с обновленной Transform Cx' эквивалентно сначала преобразованию p с помощью Tx, а затем преобразованию результата с помощью исходной Transform Cx. Другими словами, Cx'(p) = Cx(Tx(p)). Копия Tx создается, если это необходимо, поэтому дальнейшие изменения Tx не повлияют на рендеринг.- Параметры:
-
Tx- объектAffineTransform, который должен быть составлен с текущейTransform - См. также:
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);
- Параметры:
-
Tx-AffineTransform, полученный из методаgetTransform - См. также:
getTransform
public abstract AffineTransform getTransform()
Transform в контексте Graphics2D.- Возвращает:
- текущая трансформация
AffineTransformв контекстеGraphics2D. - См. также:
getPaint
public abstract Paint getPaint()
Paint контекста Graphics2D.- Возвращает:
- текущая
Graphics2D Paint, которая определяет цвет или узор. - См. также:
getComposite
public abstract Composite getComposite()
Composite контекста Graphics2D.- Возвращает:
- текущая
Graphics2D Composite, которая определяет стиль композиции. - См. также:
setBackground
public abstract void setBackground(Color color)
Graphics2D. Цвет фона используется для очистки области. Когда Graphics2D создается для Component, цвет фона наследуется от Component. Установка цвета фона в контексте Graphics2D влияет только на последующие вызовы clearRect и не влияет на цвет фона Component. Для изменения фона Component используйте соответствующие методы класса Component.- Параметры:
-
color- цвет фона, используемый в последующих вызовахclearRect - См. также:
getBackground
public abstract Color getBackground()
- Возвращает:
- текущий
Graphics2D Color, который определяет цвет фона. - См. также:
getStroke
public abstract Stroke getStroke()
Stroke в контексте Graphics2D.- Возвращает:
- текущую
Graphics2D Stroke, которая определяет стиль линии. - См. также:
clip
public abstract void clip(Shape s)
Clip с внутренностью указанной Shape и устанавливает Clip на полученное пересечение. Указанная Shape преобразуется с использованием текущего Graphics2D Transform перед пересечением с текущим Clip. Этот метод используется для уменьшения текущего Clip. Чтобы увеличить Clip, используйте setClip. Клип пользователя, изменяемый этим методом, независим от обрезки, связанной с границами устройства и видимостью. Если клип ранее не был установлен или если клип был очищен с помощью setClip с аргументом null, указанная Shape становится новым клипом пользователя.
Поскольку этот метод пересекает указанную фигуру с текущим клипом, он выбросит NullPointerException для null фигуры, если клип пользователя также не null. Поэтому вызов этого метода с аргументом null не рекомендуется.
- Параметры:
-
s-Shape, который должен быть пересечён с текущимClip. Этот метод обновляет текущийClip. - Исключения:
-
NullPointerException- еслиsявляетсяnullи клип пользователя установлен в настоящее время.
getFontRenderContext
public abstract FontRenderContext getFontRenderContext()
Font в этом контексте Graphics2D. FontRenderContext encapsulates application hints such as anti-aliasing and fractional metrics, as well as target device-specific information such as dots-per-inch. Эта информация должна предоставляться приложением при использовании объектов, выполняющих типографическое форматирование, таких как Font и TextLayout. Эта информация также должна предоставляться приложениями, которые выполняют свой собственный макет и нуждаются в точных измерениях различных характеристик глифов, таких как отступ и высота строки, когда к рендерингу текста применяются различные подсказки рендеринга.- Возвращает:
- ссылка на экземпляр FontRenderContext.
- С:
- 1.2
- См. также:
© 1993, 2023, 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://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/java/awt/Graphics2D.html