Класс 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 точкам на дюйм, например экранных устройств. Для устройств с высоким разрешением, таких как принтеры, масштабирование преобразования по умолчанию устанавливается приблизительно в 72 пользовательские координаты на квадратный дюйм. Для буферов изображений преобразованием по умолчанию является преобразование Identity.
Процесс отрисовки
Процесс отрисовки можно разделить на четыре этапа, управляемых атрибутами отрисовкиGraphics2D. Средство отрисовки может оптимизировать многие из этих этапов: кэшировать результаты для будущих вызовов, объединять несколько виртуальных этапов в одну операцию или распознавать различные атрибуты как распространённые простые случаи, которые можно исключить, изменив другие части операции. Этапы процесса отрисовки:
- Определить, что нужно отрисовать.
- Ограничить операцию отрисовки текущей областью
Clip. ОбластьClipзадаётся интерфейсомShapeв пользовательском пространстве и управляется программой с помощью различных методов изменения области отсечения вGraphicsиGraphics2D. Эта пользовательская область отсечения преобразуется в пространство устройства с помощью текущегоTransformи объединяется с областью отсечения устройства, определяемой видимостью окон и границами устройства. Пересечение пользовательской области отсечения и области отсечения устройства задаёт составную область отсечения, которая определяет итоговую область отсечения. Система отрисовки не изменяет пользовательскую область отсечения, чтобы отразить результирующую составную область отсечения. - Определить, какие цвета нужно отрисовать.
- Применить цвета к целевой поверхности рисования с помощью текущего атрибута
Compositeв контекстеGraphics2D.
Три типа операций отрисовки и подробное описание соответствующих процессов отрисовки:
- Операции
Shape- Если операция является операцией
draw(Shape), для создания нового объектаShape, содержащего контур указанного объектаShape, используется методcreateStrokedShapeтекущего атрибутаStrokeв контекстеGraphics2D. - Объект
Shapeпреобразуется из пользовательского пространства в пространство устройства с помощью текущегоTransformв контекстеGraphics2D. - Контур объекта
Shapeизвлекается с помощью методаgetPathIteratorобъектаShape. Он возвращает объектPathIterator, который проходит вдоль границы объектаShape. - Если объект
Graphics2Dне может обрабатывать криволинейные сегменты, возвращаемые объектомPathIterator, он может вызвать альтернативный методgetPathIteratorобъектаShape, который аппроксимирует объектShapeлинейными сегментами. - У текущего объекта
Paintв контекстеGraphics2Dзапрашивается объектPaintContext, задающий цвета для отрисовки в пространстве устройства.
- Если операция является операцией
- Операции с текстом
- Для определения набора глифов, необходимых для отрисовки указанного объекта
String, выполняются следующие действия:- Если аргумент является объектом
String, текущему объектуFontв контекстеGraphics2Dпоручается преобразовать символы Unicode в объектеStringв набор глифов для отображения с использованием базовых алгоритмов компоновки и формирования формы, реализованных шрифтом. - Если аргумент является объектом
AttributedCharacterIterator, итератору поручается преобразовать себя в объектTextLayoutс использованием встроенных атрибутов шрифта. ОбъектTextLayoutреализует более сложные алгоритмы размещения глифов, которые автоматически выполняют корректировку двунаправленной компоновки Unicode для нескольких шрифтов с разными направлениями письма. - Если аргумент является объектом
GlyphVector, объектGlyphVectorуже содержит соответствующие коды глифов для конкретного шрифта, а также явные координаты положения каждого глифа.
- Если аргумент является объектом
- У текущего
Fontзапрашиваются контуры указанных глифов. Эти контуры рассматриваются как фигуры пользовательского пространства относительно положения каждого глифа, определённого на шаге 1. - Контуры символов заполняются так, как описано выше в разделе Операции
Shape. - У текущего
Paintзапрашивается объектPaintContext, задающий цвета для отрисовки в пространстве устройства.
- Для определения набора глифов, необходимых для отрисовки указанного объекта
- Операции с изображениями
Image- Область интереса определяется ограничивающим прямоугольником исходного объекта
Image. Этот ограничивающий прямоугольник задаётся в пространстве изображения, которое является локальной системой координат объектаImage. - Если в метод
drawImage(Image, AffineTransform, ImageObserver)передан объектAffineTransform, объектAffineTransformиспользуется для преобразования ограничивающего прямоугольника из пространства изображения в пользовательское пространство. Если объектAffineTransformне указан, считается, что ограничивающий прямоугольник уже задан в пользовательском пространстве. - Ограничивающий прямоугольник исходного объекта
Imageпреобразуется из пользовательского пространства в пространство устройства с помощью текущегоTransform. Обратите внимание, что в результате преобразования ограничивающего прямоугольника в пространстве устройства не обязательно получается прямоугольная область. - Объект
Imageопределяет цвета для отрисовки, выполняя выборку согласно отображению координат из источника в назначение, заданному текущимTransformи дополнительным преобразованием изображения.
- Область интереса определяется ограничивающим прямоугольником исходного объекта
Атрибуты отрисовки по умолчанию
Значения атрибутов отрисовкиGraphics2D по умолчанию: -
Paint - Цвет объекта
Component. -
Font - Объект
FontобъектаComponent. -
Stroke - Квадратное перо шириной 1, без штриховки, с соединениями сегментов типа «скос» и квадратными окончаниями.
-
Transform getDefaultTransformдля объектаGraphicsConfigurationобъектаComponent.-
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 такие линии внезапно не становились вдвое шире и вдвое прозрачнее, желательно, чтобы модель задавала для таких линий контур, полностью покрывающий определённый набор пикселей и повышающий чёткость линий.
API Java 2D обеспечивает совместимость с поведением отрисовки 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 |
Рисует выделенный трёхмерный контур указанного прямоугольника. |
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 |
Рисует выделенный трёхмерный прямоугольник, заполненный текущим цветом. |
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) текущей системы координат. |
Методы, объявленные в классе 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. - См. также:
fill
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 ]
- Параметры:
-
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 становится новой пользовательской областью отсечения.
Поскольку этот метод пересекает указанную фигуру с текущей областью отсечения, для фигуры null он вызовет NullPointerException, если пользовательская область отсечения также не является null. Поэтому не рекомендуется вызывать этот метод с аргументом null.
- Параметры:
-
s-Shape, которую нужно пересечь с текущейClip. Этот метод обновляет текущуюClip. - Исключения:
-
NullPointerException- еслиsравноnull, а пользовательская область отсечения в данный момент задана.
getFontRenderContext
public abstract FontRenderContext getFontRenderContext()
Font в этом контексте Graphics2D. FontRenderContext инкапсулирует подсказки приложения, такие как сглаживание и дробные метрики, а также сведения о целевом устройстве, например разрешение в точках на дюйм. Эти сведения следует предоставлять приложению при использовании объектов, выполняющих типографское форматирование, таких как Font и TextLayout. Эти сведения также следует предоставлять приложениям, выполняющим собственную компоновку и нуждающимся в точных измерениях различных характеристик глифов, таких как ширина продвижения и высота строки, при применении различных подсказок рендеринга текста.- Возвращает:
- ссылку на экземпляр FontRenderContext.
- С версии:
- 1.2
- См. также:
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/Graphics2D.html