Класс 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. - Если в метод
drawImage(Image, AffineTransform, ImageObserver)передаётся преобразованиеAffineTransform, то это преобразование используется для преобразования ограничивающей рамки из пространства изображения в пространство пользователя. Если преобразованиеAffineTransformне указано, то ограничивающая рамка рассматривается как уже находящаяся в пространстве пользователя. - Ограничивающая рамка исходного изображения
Imageпреобразуется из пространства пользователя в пространство устройства с помощью текущегоTransform. Обратите внимание, что результат преобразования ограничивающей рамки не обязательно приводит к прямоугольной области в пространстве устройства. - Объект
Imageопределяет, какие цвета отрисовывать, взятые из исходного изображения, в соответствии с отображением координат "исходное изображение -> целевое изображение", заданным текущимTransformи (необязательным) преобразованием изображения.
- Область интереса определяется ограничивающей рамкой исходного изображения
Атрибуты отрисовки по умолчанию
Значения по умолчанию для атрибутов отрисовкиGraphics2D: -
Paint - Цвет
Component. -
Font - Толщина
FontComponent. -
Stroke - Квадратная кисть с толщиной 1, без пунктира, с соединением сегментов типа "палец" и квадратными концами.
-
Transform - Преобразование
getDefaultTransformдляGraphicsConfigurationобъектаComponent. -
Composite - Правило
AlphaComposite.SRC_OVER. -
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 без штриховки, а преобразование по умолчанию для рисования на экране — это преобразование тождества.
Следующие два правила обеспечивают предсказуемое поведение рендеринга, независимо от того, используется ли алиасинг или антиалиасинг.
- Координаты устройства определены как расположенные между пикселями устройства, что исключает несоответствия между рендерингом с алиасингом и антиалиасингом. Если бы координаты были определены как расположенные в центре пикселя, то некоторые пиксели, покрытые фигурой, такой как прямоугольник, были бы покрыты только наполовину. При рендеринге с алиасингом наполовину покрытые пиксели либо отображались бы внутри фигуры, либо вне ее. При рендеринге с антиалиасингом пиксели по всему краю фигуры были бы покрыты наполовину. С другой стороны, поскольку координаты определены как расположенные между пикселями, фигура, например, прямоугольник, не имела бы наполовину покрытых пикселей, независимо от того, используется ли для ее рендеринга антиалиасинг.
- Линии и пути, нарисованные с использованием объекта
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. Этот класс переопределяет эти реализации версиями, использующими только текущий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 |
Перезаписывает Transform в контексте 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если изображение полностью загружено и полностью отрисовано, или если оно равно null;falseесли изображение всё ещё загружается. - См. также:
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);
- Параметры:
-
op- фильтр, применяемый к изображению перед отрисовкой -
img- указанноеBufferedImageдля отрисовки. Этот метод ничего не делает, еслиimgравно null. -
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- текст для отрисовки -
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- глифы для отрисовки -
x- положение x в пространстве пользователя, где должны быть отображены глифы -
y- положение y в пространстве пользователя, где должны быть отображены глифы - Throws:
-
NullPointerException- еслиgравноnull. - See Also:
заливка
public abstract void fill(Shape s)
Shape с использованием настроек контекста Graphics2D. Применяемые атрибуты отображения включают Clip, Transform, Paint, и Composite.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. Он определяет, как новые пиксели будут комбинироваться с существующими пикселями на графическом устройстве во время процесса отрисовки. Если данный контекст Graphics2D рисует на Component на экране дисплея, а Composite является пользовательским объектом, а не экземпляром класса AlphaComposite, и если установлен менеджер безопасности, вызывается его метод checkPermission с разрешением AWTPermission("readDisplayPixels").
- Параметры:
-
comp- объектCompositeдля использования в процессе отрисовки - Исключения:
-
SecurityException- если используется пользовательский объектCompositeдля отрисовки на экран, установлен менеджер безопасности, и его методcheckPermissionне разрешает операцию. - См. также:
установитьЗаливу
public abstract void setPaint(Paint paint)
Paint для контекста Graphics2D. Вызов этого метода с объектом null Paint не влияет на текущий атрибут Paint данного Graphics2D.- Параметры:
-
paint- объектPaintдля генерации цвета во время отрисовки, илиnull - См. также:
установитьОбводку
public abstract void setStroke(Stroke s)
Stroke для контекста Graphics2D.- Параметры:
-
s- объектStrokeдля нанесения обводкиShapeво время процесса отрисовки - См. также:
установитьПараметрОтрисовки
public abstract void setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
RenderingHints для определения некоторых общих ключей и значений.- Параметры:
-
hintKey- ключ параметра, который нужно установить. -
hintValue- значение, указывающее предпочтения для указанной категории параметров. - См. также:
получитьПараметрОтрисовки
public abstract Object getRenderingHint(RenderingHints.Key hintKey)
RenderingHints для определения некоторых общих ключей и значений.- Параметры:
-
hintKey- ключ, соответствующий искомому параметру. - Возвращает:
- объект, представляющий значение для указанного ключа параметра. Некоторые ключи и их связанные значения определены в классе
RenderingHints. - См. также:
установитьПараметрыОтрисовки
public abstract void setRenderingHints(Map<?,?> hints)
hints. Существующие значения всех параметров отрисовки игнорируются, а новый набор известных параметров и значений инициализируется из указанного объекта Map. Категории параметров включают в себя управление качеством отрисовки и общей компромиссом времени/качества в процессе отрисовки. Обратитесь к классу RenderingHints для определения некоторых общих ключей и значений.- Параметры:
-
hints- параметры отрисовки, которые нужно установить - См. также:
добавитьПараметрыОтрисовки
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- еслиsnullи область обрезки в настоящее время установлена.
getFontRenderContext
public abstract FontRenderContext getFontRenderContext()
Font в рамках этого контекста Graphics2D . FontRenderContext инкапсулирует параметры приложения, такие как антиалиасинг и дробные метрики, а также информацию о целевом устройстве, такую как точки на дюйм. Эту информацию должно предоставлять приложение при использовании объектов, выполняющих типографическую обработку, таких как Font и TextLayout. Эту информацию также должны предоставлять приложения, выполняющие собственный макет и нуждающиеся в точных измерениях различных характеристик глифов, таких как отступ и высота строки, когда к рендерингу текста применяются различные параметры рендеринга.- Возвращает:
- ссылка на экземпляр FontRenderContext.
- С:
- 1.2
- См. также:
© 1993, 2021, 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/17/docs/api/java.desktop/java/awt/Graphics2D.html