Spec-Zone.ru › OpenJDK 24

Класс Graphics2D

java.lang.Object
java.awt.Graphics
java.awt.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. Рендерер может оптимизировать многие из этих шагов, кэшируя результаты для будущих вызовов, объединяя несколько виртуальных шагов в одну операцию или распознавая различные атрибуты как общие простые случаи, которые можно устранить, изменив другие части операции.

Шаги процесса отрисовки:

  1. Определить, что отрисовывать.
  2. Ограничить операцию отрисовки текущей областью Clip. Область Clip задаётся объектом Shape в пространстве пользователя и управляется программой с помощью различных методов изменения обрезки Graphics и Graphics2D. Этот клип пользователя преобразуется в пространство устройства текущим Transform и объединяется с клипом устройства, который определяется видимостью окон и областями устройства. Комбинация клипа пользователя и клипа устройства определяет составной клип, который определяет конечную область обрезки. Клип пользователя не изменяется системой отрисовки, чтобы отразить результирующую составную область обрезки.
  3. Определить цвета для отрисовки.
  4. Применить цвета к целевой поверхности рисования, используя текущий атрибут Composite в контексте Graphics2D.

Три типа операций отрисовки вместе с подробностями каждого из их конкретных процессов отрисовки:
  1. Shape операции
    1. Если операция является операцией draw(Shape), то метод createStrokedShape текущего атрибута Stroke в контексте Graphics2D используется для построения нового объекта Shape, содержащего контур указанной фигуры Shape.
    2. Shape преобразуется из пространства пользователя в пространство устройства с использованием текущего Transform в контексте Graphics2D.
    3. Контур фигуры Shape извлекается с помощью метода getPathIterator объекта Shape, который возвращает объект PathIterator, который итерирует по границе Shape.
    4. Если объект Graphics2D не может обрабатывать криволинейные сегменты, возвращаемые объектом PathIterator, то он может вызвать альтернативный метод getPathIterator объекта Shape, который сглаживает Shape.
    5. Текущий атрибут Paint в контексте Graphics2D запрашивается для получения объекта PaintContext, который задаёт цвета для отрисовки в пространстве устройства.
  2. Операции с текстом
    1. Следующие шаги используются для определения набора глифов, необходимых для отрисовки указанного String:
      1. Если аргументом является String, то текущий атрибут Font в контексте Graphics2D запрашивается для преобразования символов Юникода в String в набор глифов для представления с любыми базовыми алгоритмами выравнивания и формирования, которые реализует шрифт.
      2. Если аргументом является AttributedCharacterIterator, итератор запрашивается для преобразования себя в TextLayout с использованием встроенных атрибутов шрифта. TextLayout реализует более сложные алгоритмы выравнивания глифов, которые автоматически выполняют корректировки выравнивания Юникода для множественных шрифтов с разными направлениями письма.
      3. Если аргументом является GlyphVector, то объект GlyphVector уже содержит соответствующие глифы шрифта со явными координатами для позиции каждого глифа.
    2. Текущий Font запрашивается для получения контуров указанных глифов. Эти контуры рассматриваются как фигуры в пространстве пользователя относительно позиции каждого глифа, определённой на шаге 1.
    3. Контуры символов заполняются, как указано выше в разделе Shape операции.
    4. Текущий Paint запрашивается для получения объекта PaintContext, который определяет цвета для отрисовки в пространстве устройства.
  3. Image операции
    1. Область интереса определяется границами рамки исходного Image. Эта рамка задаётся в пространстве изображения, которое является локальной системой координат объекта Image.
    2. Если AffineTransform передаётся в drawImage(Image, AffineTransform, ImageObserver), то AffineTransform используется для преобразования рамки из пространства изображения в пространство пользователя. Если AffineTransform не указан, рамка обрабатывается как уже находящаяся в пространстве пользователя.
    3. Рамка исходного Image преобразуется из пространства пользователя в пространство устройства с использованием текущего Transform. Обратите внимание, что результат преобразования рамки необязательно приводит к прямоугольной области в пространстве устройства.
    4. Объект 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 platform) поддерживает обработку сглаживания. Перо шириной в один пиксель не обязательно должно полностью лежать на пикселе N, в отличие от пикселя N+1. Перо может частично лежать на обоих пикселях. Не нужно выбирать направление смещения для широкого пера, так как смешивание, происходящее вдоль краёв траектории пера, делает положение подпикселей пера видимым для пользователя. С другой стороны, при отключении сглаживания путём установки ключа KEY_ANTIALIASING в значение VALUE_ANTIALIAS_OFF, рендерер, возможно, должен применить смещение для определения пикселя, который следует изменить, когда перо пересекает границу пикселя, например, когда оно рисуется вдоль целой координаты в пространстве устройства. Хотя возможности рендеринга со сглаживанием делают необязательным для модели рендеринга указание смещения для пера, желательно, чтобы рендереры со сглаживанием и без него выполнялись аналогично в распространённых случаях рисования горизонтальных и вертикальных линий шириной в один пиксель на экране. Для того чтобы включение сглаживания путём установки ключа KEY_ANTIALIASING в значение VALUE_ANTIALIAS_ON не приводило к внезапному увеличению ширины таких линий вдвое и уменьшению их непрозрачности вдвое, желательно, чтобы модель определяла траекторию для таких линий, чтобы они полностью покрывали определённый набор пикселей для повышения их чёткости.

Java 2D API сохраняет совместимость с поведением рендеринга JDK 1.1, так что поведение старых операций и существующих рендереров не меняется в API Java 2D. Определены старые методы, которые отображаются на общие draw и fill методы, что чётко показывает, как Graphics2D расширяет Graphics на основе настроек Stroke и Transform атрибутов и параметров рендеринга. Определение выполняется идентично в стандартных настройках атрибутов. Например, стандартный Stroke представляет собой BasicStroke шириной 1 без пунктирной линии, а стандартный преобразование для рисования на экране — это тождественное преобразование.

Следующие два правила обеспечивают предсказуемое поведение рендеринга как при использовании сглаживания, так и без него.

  • Координаты устройства определены как расположенные между пикселями устройства, что предотвращает несоответствия между рендерингом со сглаживанием и без него. Если бы координаты были определены в центре пикселя, некоторые пиксели, покрываемые фигурой, такой как прямоугольник, были бы покрыты только наполовину. При рендеринге без сглаживания такие наполовину покрытые пиксели либо отображались бы внутри фигуры, либо за её пределами. При рендеринге со сглаживанием пиксели по всей границе фигуры были бы покрыты наполовину. С другой стороны, так как координаты определены как расположенные между пикселями, фигура, такая как прямоугольник, не будет иметь наполовину покрытых пикселей, независимо от того, используется ли для её рендеринга сглаживание.
  • Линии и контуры, нарисованные с помощью объекта BasicStroke, могут быть «нормализованы» для обеспечения согласованного рендеринга контуров при размещении в различных точках рисуемого объекта и при рисовании со сглаживанием или без него. Этот процесс нормализации контролируется параметром KEY_STROKE_CONTROL. Точный алгоритм нормализации не указан, но цели этой нормализации заключаются в том, чтобы обеспечить согласованный визуальный вид линий независимо от того, как они попадают на сетку пикселей, и способствовать более чётким горизонтальным и вертикальным линиям в режиме сглаживания, чтобы они больше напоминали свои аналоги без сглаживания. Типичный шаг нормализации может включать перемещение конечных точек сглаженных линий в центры пикселей для уменьшения смешивания или корректировку положения подпикселей линий без сглаживания таким образом, чтобы ширина линий с плавающей точкой округлялась до чётного или нечётного количества пикселей с равной вероятностью. Этот процесс может сдвигать конечные точки на полпикселя (обычно в сторону положительной бесконечности по обеим осям) для обеспечения этих согласованных результатов.

Следующие определения общих старых методов выполняют идентично ранее указанному поведению при стандартных настройках атрибутов:

  • Для операций fill, включая fillRect, fillRoundRect, fillOval, fillArc, fillPolygon и clearRect, fill теперь можно вызвать с нужным Shape. Например, при заливке прямоугольника вызывается
     fill(new Rectangle(x, y, w, h));
     
    .
  • Аналогично, для операций рисования, включая drawLine, drawRect, drawRoundRect, drawOval, drawArc, drawPolyline и drawPolygon, draw теперь можно вызвать с нужным Shape. Например, при рисовании прямоугольника вызывается
     draw(new Rectangle(x, y, w, h));
     
    .
  • Методы draw3DRect и fill3DRect были реализованы с помощью методов drawLine и fillRect в классе Graphics, что определяло их поведение на основе текущих объектов Stroke и Paint в контексте Graphics2D. Этот класс перезаписывает эти реализации версиями, которые используют только текущий объект Color, перезаписывая текущий объект Paint и использует fillRect для описания точно такого же поведения, как у существующих методов, независимо от настройки текущего Stroke.
Класс Graphics определяет только метод setColor для управления цветом, который будет нанесён. Поскольку API Java 2D расширяет объект Color для реализации нового интерфейса Paint, существующий метод setColor теперь является удобным методом для установки текущего атрибута Paint в объект Color. setColor(c) эквивалентно setPaint(c).

Класс Graphics определяет два метода для управления тем, как цвета применяются к получателю.

  1. Метод setPaintMode реализован как удобный метод для установки стандартного Composite, эквивалентного setComposite(new AlphaComposite.SrcOver).
  2. Метод setXORMode(Color xorcolor) реализован как удобный метод для установки специального объекта Composite, который игнорирует компоненты Alpha исходных цветов и устанавливает цвет получателя в значение:
     dstpixel = (PixelOf(srccolor) ^ PixelOf(xorcolor) ^ dstpixel);
     
    .
См. также:
  • RenderingHints

Краткое описание конструкторов

Graphics2D()
Модификатор Конструктор Описание
protected
Создаёт новый объект Graphics2D.

Краткое описание методов

Модификатор и тип Метод Описание
abstract void addRenderingHints(Map<?,?> hints)
Устанавливает значения произвольного количества предпочтений для алгоритмов отрисовки.
abstract void clip(Shape s)
Пересекает текущую Clip с внутренностью указанной Shape и устанавливает Clip в полученное пересечение.
abstract void draw(Shape s)
Отображает контур Shape, используя настройки текущего контекста Graphics2D.
void draw3DRect(int x, int y, int width, int height, boolean raised)
Рисует 3D выделенный контур указанного прямоугольника.
abstract void drawGlyphVector(GlyphVector g, float x, float y)
Отображает текст указанного GlyphVector, используя атрибуты отрисовки контекста Graphics2D.
abstract void drawImage(BufferedImage img, BufferedImageOp op, int x, int y)
Отображает BufferedImage, отфильтрованный с помощью BufferedImageOp.
abstract boolean drawImage(Image img, AffineTransform xform, ImageObserver obs)
Отображает изображение, применяя преобразование из пространства изображения в пространство пользователя перед отрисовкой.
abstract void drawRenderableImage(RenderableImage img, AffineTransform xform)
Отображает RenderableImage, применяя преобразование из пространства изображения в пространство пользователя перед отрисовкой.
abstract void drawRenderedImage(RenderedImage img, AffineTransform xform)
Отображает RenderedImage, применяя преобразование из пространства изображения в пространство пользователя перед отрисовкой.
abstract void drawString(String str, float x, float y)
Отображает текст, заданный указанным String, используя текущее состояние атрибутов текста в контексте Graphics2D.
abstract void drawString(String str, int x, int y)
Отображает текст указанного String, используя текущее состояние атрибутов текста в контексте Graphics2D.
abstract void drawString(AttributedCharacterIterator iterator, float x, float y)
Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса TextAttribute.
abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса TextAttribute.
abstract void fill(Shape s)
Заливает внутренность Shape, используя настройки контекста Graphics2D.
void fill3DRect(int x, int y, int width, int height, boolean raised)
Окрашивает 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(RenderingHints.Key hintKey)
Возвращает значение одного предпочтения для алгоритмов отрисовки.
abstract RenderingHints getRenderingHints()
Получает предпочтения для алгоритмов отрисовки.
abstract Stroke getStroke()
Возвращает текущий Stroke в контексте Graphics2D.
abstract AffineTransform getTransform()
Возвращает копию текущего Transform в контексте Graphics2D.
abstract boolean hit(Rectangle rect, Shape s, boolean onStroke)
Проверяет, пересекается ли указанное Shape с указанным Rectangle, который находится в пространстве устройства.
abstract void rotate(double theta)
Конкатенирует текущее Graphics2D Transform с преобразованием поворота.
abstract void rotate(double theta, double x, double y)
Конкатенирует текущее Graphics2D Transform с преобразованным поворотом.
abstract void scale(double sx, double sy)
Конкатенирует текущее Graphics2D Transform со масштабирующим преобразованием. Последующая отрисовка изменяет размер в соответствии с заданными коэффициентами масштабирования по отношению к предыдущему масштабированию.
abstract void setBackground(Color color)
Устанавливает цвет фона для контекста Graphics2D.
abstract void setComposite(Composite comp)
Устанавливает Composite для контекста Graphics2D.
abstract void setPaint(Paint paint)
Устанавливает атрибут Paint для контекста Graphics2D.
abstract void setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
Устанавливает значение одного предпочтения для алгоритмов отрисовки.
abstract void setRenderingHints(Map<?,?> hints)
Заменяет значения всех предпочтений для алгоритмов отрисовки на указанные hints.
abstract void setStroke(Stroke s)
Устанавливает Stroke для контекста Graphics2D.
abstract void setTransform(AffineTransform Tx)
Перезаписывает преобразование в контексте Graphics2D.
abstract void shear(double shx, double shy)
Конкатенирует текущее Graphics2D Transform с преобразованием сдвига.
abstract void transform(AffineTransform Tx)
Создаёт объект AffineTransform с Transform в этом контексте Graphics2D в соответствии с правилом «последнее указанное — первое применяемое».
abstract void translate(double tx, double ty)
Конкатенирует текущее Graphics2D Transform с преобразованием перемещения.
abstract void translate(int x, int y)
Перемещает начало координат контекста 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

Методы, объявленные в классе java.lang.Object

clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Подробное описание конструкторов

Graphics2D

protected Graphics2D()
Создаёт новый объект Graphics2D. Поскольку Graphics2D является абстрактным классом и должен быть настроен подклассами для разных устройств вывода, объекты Graphics2D не могут быть созданы напрямую. Вместо этого объекты Graphics2D должны быть получены из другого объекта Graphics2D, созданного объектом Component, или получены из изображений, таких как объекты BufferedImage.
См. также:
  • Component.getGraphics()
  • Graphics.create()

Подробное описание методов

draw3DRect

public void draw3DRect(int x, int y, int width, int height, boolean raised)
Рисует 3D-выделенную обводку заданного прямоугольника. Границы прямоугольника выделены так, что они кажутся скошенными и освещёнными сверху слева.

Цвета, используемые для эффекта выделения, определяются на основе текущего цвета. Результирующий прямоугольник занимает область, которая имеет ширину width + 1 пикселя и высоту height + 1 пикселя. Этот метод использует исключительно текущий Color и игнорирует текущий Paint.

Переопределяет:
draw3DRect в классе Graphics
Параметры:
x - координата x прямоугольника, который необходимо нарисовать.
y - координата y прямоугольника, который необходимо нарисовать.
width - ширина прямоугольника, который необходимо нарисовать.
height - высота прямоугольника, который необходимо нарисовать.
raised - булево значение, определяющее, кажется ли прямоугольник поднятым над поверхностью или опущенным в поверхность.
См. также:
  • Graphics.fill3DRect(int, int, int, int, boolean)

fill3DRect

public void fill3DRect(int x, int y, int width, int height, boolean raised)
Заливает 3D-выделенный прямоугольник текущим цветом. Границы прямоугольника выделены так, что они кажутся скошенными и освещёнными сверху слева. Цвета, используемые для эффекта выделения и заливки, определяются на основе текущего Color. Этот метод использует исключительно текущий Color и игнорирует текущий Paint.
Переопределяет:
fill3DRect в классе Graphics
Параметры:
x - координата x прямоугольника, который необходимо заполнить.
y - координата y прямоугольника, который необходимо заполнить.
width - ширина прямоугольника, который необходимо заполнить.
height - высота прямоугольника, который необходимо заполнить.
raised - булево значение, определяющее, кажется ли прямоугольник поднятым над поверхностью или врезанным в поверхность.
См. также:
  • Graphics.draw3DRect(int, int, int, int, boolean)

draw

public abstract void draw(Shape s)
Отображает контур Shape используя настройки текущего контекста Graphics2D. Применяемые атрибуты рендеринга включают в себя атрибуты Clip, Transform, Paint, Composite и Stroke.
Параметры:
s - Shape для отрисовки
См. также:
  • setStroke(java.awt.Stroke)
  • setPaint(java.awt.Paint)
  • Graphics.setColor(java.awt.Color)
  • transform(java.awt.geom.AffineTransform)
  • setTransform(java.awt.geom.AffineTransform)
  • clip(java.awt.Shape)
  • Graphics.setClip(int, int, int, int)
  • setComposite(java.awt.Composite)

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 всё ещё загружается.
См. также:
  • transform(java.awt.geom.AffineTransform)
  • setTransform(java.awt.geom.AffineTransform)
  • setComposite(java.awt.Composite)
  • clip(java.awt.Shape)
  • Graphics.setClip(int, int, int, int)

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 расположения в пространстве пользователя, где отображается верхний левый угол изображения
См. также:
  • transform(java.awt.geom.AffineTransform)
  • setTransform(java.awt.geom.AffineTransform)
  • setComposite(java.awt.Composite)
  • clip(java.awt.Shape)
  • Graphics.setClip(int, int, int, int)

drawRenderedImage

public abstract void drawRenderedImage(RenderedImage img, AffineTransform xform)
Отображает RenderedImage, применяя преобразование из пространства изображения в пространство пользователя перед отрисовкой. Преобразование из пространства пользователя в пространство устройства выполняется с помощью текущего Transform в Graphics2D. Указанное преобразование применяется к изображению перед применением атрибута преобразования в контексте Graphics2D. Применяемые атрибуты рендеринга включают в себя атрибуты Clip, Transform и Composite. Обратите внимание, что отрисовка не выполняется, если заданное преобразование не обратимо.
Параметры:
img - изображение для отрисовки. Этот метод ничего не делает, если img равно null.
xform - преобразование из пространства изображения в пространство пользователя
См. также:
  • transform(java.awt.geom.AffineTransform)
  • setTransform(java.awt.geom.AffineTransform)
  • setComposite(java.awt.Composite)
  • clip(java.awt.Shape)
  • Graphics.setClip(int, int, int, int)

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 - преобразование из пространства изображения в пространство пользователя
См. также:
  • transform(java.awt.geom.AffineTransform)
  • setTransform(java.awt.geom.AffineTransform)
  • setComposite(java.awt.Composite)
  • clip(java.awt.Shape)
  • Graphics.setClip(int, int, int, int)
  • drawRenderedImage(java.awt.image.RenderedImage, java.awt.geom.AffineTransform)

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
См. также:
  • Graphics.drawBytes(byte[], int, int, int, int)
  • Graphics.drawChars(char[], int, int, int, int)

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
См. также:
  • setPaint(java.awt.Paint)
  • Graphics.setColor(java.awt.Color)
  • Graphics.setFont(java.awt.Font)
  • setTransform(java.awt.geom.AffineTransform)
  • setComposite(java.awt.Composite)
  • Graphics.setClip(int, int, int, int)

drawString

public abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса TextAttribute.

Базовая линия первого символа находится в позиции (x, y) в пространстве пользователя. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанная координата обозначает позицию самого левого символа на базовой линии.

Определено в:
drawString в классе Graphics
Параметры:
iterator - итератор, текст которого необходимо отобразить
x - координата x, где отображается текст итератора
y - координата y, где отображается текст итератора
Исключения:
NullPointerException - если iterator равно null
См. также:
  • setPaint(java.awt.Paint)
  • Graphics.setColor(java.awt.Color)
  • setTransform(java.awt.geom.AffineTransform)
  • setComposite(java.awt.Composite)
  • Graphics.setClip(int, int, int, int)

drawString

public abstract void drawString(AttributedCharacterIterator iterator, float x, float y)
Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса TextAttribute.

Базовая линия первого символа находится в позиции (x, y) в пространстве пользователя. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанная координата обозначает позицию самого левого символа на базовой линии.

Параметры:
iterator - итератор, текст которого необходимо отобразить
x - координата x, где отображается текст итератора
y - координата y, где отображается текст итератора
Исключения:
NullPointerException - если iterator равно null
См. также:
  • setPaint(java.awt.Paint)
  • Graphics.setColor(java.awt.Color)
  • setTransform(java.awt.geom.AffineTransform)
  • setComposite(java.awt.Composite)
  • Graphics.setClip(int, int, int, int)

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.
См. также:
  • Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
  • GlyphVector
  • setPaint(java.awt.Paint)
  • Graphics.setColor(java.awt.Color)
  • setTransform(java.awt.geom.AffineTransform)
  • setComposite(java.awt.Composite)
  • Graphics.setClip(int, int, int, int)

Заполнение

public abstract void fill(Shape s)
Заполняет внутреннюю область Shape, используя настройки контекста Graphics2D. Применяемые атрибуты отрисовки включают Clip, Transform, Paint и Composite.
Параметры:
s - заполняемая Shape
См. также:
  • setPaint(java.awt.Paint)
  • Graphics.setColor(java.awt.Color)
  • transform(java.awt.geom.AffineTransform)
  • setTransform(java.awt.geom.AffineTransform)
  • setComposite(java.awt.Composite)
  • clip(java.awt.Shape)
  • Graphics.setClip(int, int, int, int)

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 в противном случае.
См. также:
  • setStroke(java.awt.Stroke)
  • fill(java.awt.Shape)
  • draw(java.awt.Shape)
  • transform(java.awt.geom.AffineTransform)
  • setTransform(java.awt.geom.AffineTransform)
  • clip(java.awt.Shape)
  • Graphics.setClip(int, int, int, int)

getDeviceConfiguration

public abstract GraphicsConfiguration getDeviceConfiguration()
Возвращает конфигурацию устройства, связанную с этим Graphics2D.
Возвращает:
конфигурацию устройства для этого Graphics2D.

setComposite

public abstract void setComposite(Composite comp)
Устанавливает Composite для контекста Graphics2D. Composite используется во всех методах рисования, таких как drawImage, drawString, draw и fill. Он определяет, как новые пиксели комбинируются с существующими пикселями на устройстве графики во время процесса отрисовки.
Параметры:
comp - объект Composite, который используется для отрисовки
См. также:
  • Graphics.setXORMode(java.awt.Color)
  • Graphics.setPaintMode()
  • getComposite()
  • AlphaComposite

setPaint

public abstract void setPaint(Paint paint)
Устанавливает атрибут Paint для контекста Graphics2D. Вызов этого метода с объектом null Paint не оказывает никакого влияния на текущий атрибут Paint этого Graphics2D.
Параметры:
paint - объект Paint, используемый для генерации цвета во время отрисовки, или null
См. также:
  • Graphics.setColor(java.awt.Color)
  • getPaint()
  • GradientPaint
  • TexturePaint

setStroke

public abstract void setStroke(Stroke s)
Устанавливает Stroke для контекста Graphics2D.
Параметры:
s - объект Stroke, используемый для обводки Shape во время отрисовки
См. также:
  • BasicStroke
  • getStroke()

setRenderingHint

public abstract void setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
Устанавливает значение одного предпочтения для алгоритмов отрисовки. Категории подсказок включают элементы управления качеством отрисовки и общим балансом времени/качества в процессе отрисовки. Обратитесь к классу RenderingHints для определений некоторых общих ключей и значений.
Параметры:
hintKey - ключ настраиваемого параметра.
hintValue - значение, указывающее предпочтения для указанной категории подсказок.
См. также:
  • getRenderingHint(RenderingHints.Key)
  • RenderingHints

getRenderingHint

public abstract Object getRenderingHint(RenderingHints.Key hintKey)
Возвращает значение одного предпочтения для алгоритмов отрисовки. Категории подсказок включают элементы управления качеством отрисовки и общим балансом времени/качества в процессе отрисовки. Обратитесь к классу RenderingHints для определений некоторых общих ключей и значений.
Параметры:
hintKey - ключ, соответствующий искомому параметру.
Возвращает:
объект, представляющий значение для указанного ключа параметра. Некоторые ключи и связанные с ними значения определены в классе RenderingHints.
См. также:
  • RenderingHints
  • setRenderingHint(RenderingHints.Key, Object)

setRenderingHints

public abstract void setRenderingHints(Map<?,?> hints)
Заменяет значения всех предпочтений для алгоритмов отрисовки заданным hints. Существующие значения всех параметров отрисовки отбрасываются, а новый набор известных параметров и значений инициализируется из указанного объекта Map. Категории подсказок включают элементы управления качеством отрисовки и общим балансом времени/качества в процессе отрисовки. Обратитесь к классу RenderingHints для определений некоторых общих ключей и значений.
Параметры:
hints - параметры отрисовки, которые нужно установить
См. также:
  • getRenderingHints()
  • RenderingHints

addRenderingHints

public abstract void addRenderingHints(Map<?,?> hints)
Устанавливает значения произвольного числа предпочтений для алгоритмов отрисовки. Только значения параметров отрисовки, присутствующие в указанном объекте Map, изменяются. Все остальные предпочтения, отсутствующие в указанном объекте, остаются неизменными. Категории подсказок включают элементы управления качеством отрисовки и общим балансом времени/качества в процессе отрисовки. Обратитесь к классу RenderingHints для определений некоторых общих ключей и значений.
Параметры:
hints - настраиваемые параметры отрисовки
См. также:
  • RenderingHints

getRenderingHints

public abstract RenderingHints getRenderingHints()
Получает предпочтения для алгоритмов отрисовки. Категории подсказок включают элементы управления качеством отрисовки и общим балансом времени/качества в процессе отрисовки. Возвращает все пары ключ/значение параметров, которые когда-либо были заданы в одной операции. Обратитесь к классу RenderingHints для определений некоторых общих ключей и значений.
Возвращает:
ссылку на экземпляр RenderingHints, содержащий текущие предпочтения.
См. также:
  • RenderingHints
  • setRenderingHints(Map)

translate

public abstract void translate(int x, int y)
Переводит начало координат контекста Graphics2D в точку (x, y) в текущей системе координат. Изменяет контекст Graphics2D, так что его новое начало координат соответствует точке (x, y) в прежней системе координат контекста Graphics2D. Все координаты, используемые в последующих операциях отрисовки в этом графическом контексте, будут относиться к этому новому началу координат.
Specified by:
translate в классе Graphics
Parameters:
x - заданная координата x
y - заданная координата y
Since:
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   ]
 
Parameters:
tx - расстояние смещения по оси x
ty - расстояние смещения по оси y

rotate

public abstract void rotate(double theta)
Конкатенирует текущее преобразование Graphics2D Transform с поворотом. Последующая отрисовка будет повернута на указанные радианы относительно предыдущего начала координат. Это эквивалентно вызову transform(R), где R — преобразование AffineTransform, представленное следующей матрицей:
          [   cos(theta)    -sin(theta)    0   ]
          [   sin(theta)     cos(theta)    0   ]
          [       0              0         1   ]
 
Поворот с положительным углом theta поворачивает точки на положительной оси x к положительной оси y.
Parameters:
theta - угол поворота в радианах

rotate

public abstract void rotate(double theta, double x, double y)
Конкатенирует текущее преобразование Graphics2D Transform с преобразованием смещенного поворота. Последующая отрисовка преобразуется с помощью преобразования, которое строится путем сдвига в указанную точку, поворота на указанные радианы и сдвига назад на ту же величину, что и исходный сдвиг. Это эквивалентно следующей последовательности вызовов:
          translate(x, y);
          rotate(theta);
          translate(-x, -y);
 
Поворот с положительным углом theta поворачивает точки на положительной оси x к положительной оси y.
Parameters:
theta - угол поворота в радианах
x - координата x начала поворота
y - координата y начала поворота

scale

public abstract void scale(double sx, double sy)
Конкатенирует текущее преобразование Graphics2D Transform с преобразованием масштабирования. Последующая отрисовка изменяет размер в соответствии с указанными коэффициентами масштабирования относительно предыдущего масштабирования. Это эквивалентно вызову transform(S), где S — преобразование AffineTransform, представленное следующей матрицей:
          [   sx   0    0   ]
          [   0    sy   0   ]
          [   0    0    1   ]
 
Parameters:
sx - коэффициент, на который умножаются координаты X в последующих операциях отрисовки относительно предыдущих операций отрисовки.
sy - коэффициент, на который умножаются координаты Y в последующих операциях отрисовки относительно предыдущих операций отрисовки.

shear

public abstract void shear(double shx, double shy)
Конкатенирует текущее преобразование Graphics2D Transform с преобразованием сдвига. Последующая отрисовка сдвигается на указанный множитель относительно предыдущего положения. Это эквивалентно вызову transform(SH), где SH — преобразование AffineTransform, представленное следующей матрицей:
          [   1   shx   0   ]
          [  shy   1    0   ]
          [   0    0    1   ]
 
Parameters:
shx - множитель, на который координаты смещаются в положительном направлении оси X в зависимости от их координаты Y
shy - множитель, на который координаты смещаются в положительном направлении оси Y в зависимости от их координаты X

transform

public abstract void transform(AffineTransform Tx)
Компонует объект AffineTransform с преобразованием Transform в этом контексте Graphics2D в соответствии с правилом «последнее указанное — применяется первым». Если текущее преобразование — Cx, результат композиции с Tx — новое преобразование Cx'. Cx' становится текущим преобразованием Transform для этого контекста Graphics2D. Преобразование точки p обновлённым преобразованием Cx' эквивалентно преобразованию p с помощью Tx, а затем преобразованию результата с помощью исходного преобразования Cx. Другими словами, Cx'(p) = Cx(Tx(p)). Копия Tx создается при необходимости, поэтому дальнейшие изменения в Tx не влияют на отрисовку.
Parameters:
Tx - объект AffineTransform, который нужно составить с текущим преобразованием Transform
See Also:
  • setTransform(java.awt.geom.AffineTransform)
  • AffineTransform

setTransform

public abstract void setTransform(AffineTransform Tx)
Перезаписывает преобразование в контексте Graphics2D. ВНИМАНИЕ: Этот метод никогда не следует использовать для применения нового преобразования координат поверх существующего преобразования, потому что контекст Graphics2D может уже содержать преобразование, необходимое для других целей, таких как отрисовка компонентов Swing или применение преобразования масштабирования для адаптации к разрешению принтера.

Чтобы добавить преобразование координат, используйте методы transform, rotate, scale или shear. Метод setTransform предназначен только для восстановления исходного преобразования Graphics2D после отрисовки, как показано в этом примере:

 // Get the current transform
 AffineTransform saveAT = g2.getTransform();
 // Perform transformation
 g2d.transform(...);
 // Render
 g2d.draw(...);
 // Restore original transform
 g2d.setTransform(saveAT);
 
Parameters:
Tx - AffineTransform, полученное из метода getTransform
See Also:
  • transform(java.awt.geom.AffineTransform)
  • getTransform()
  • AffineTransform

getTransform

public abstract AffineTransform getTransform()
Возвращает копию текущего преобразования Transform в контексте Graphics2D.
Returns:
текущее преобразование AffineTransform в контексте Graphics2D.
See Also:
  • transform(java.awt.geom.AffineTransform)
  • setTransform(java.awt.geom.AffineTransform)

getPaint

public abstract Paint getPaint()
Возвращает текущую заливку Paint контекста Graphics2D.
Returns:
текущая заливка Graphics2D Paint, определяющая цвет или узор.
See Also:
  • setPaint(java.awt.Paint)
  • Graphics.setColor(java.awt.Color)

getComposite

public abstract Composite getComposite()
Возвращает текущий режим наложения Composite в контексте Graphics2D.
Returns:
текущий режим наложения Graphics2D Composite, определяющий стиль наложения.
See Also:
  • setComposite(java.awt.Composite)

setBackground

public abstract void setBackground(Color color)
Устанавливает цвет фона для контекста Graphics2D. Цвет фона используется для очистки области. Когда контекст Graphics2D создаётся для Component, цвет фона наследуется от Component. Установка цвета фона в контексте Graphics2D влияет только на последующие вызовы clearRect, а не на цвет фона самого контекста Component. Чтобы изменить фон Component, используйте соответствующие методы Component.
Parameters:
color - цвет фона, используемый в последующих вызовах clearRect
See Also:
  • getBackground()
  • Graphics.clearRect(int, int, int, int)

getBackground

public abstract Color getBackground()
Возвращает цвет фона, используемый для очистки области.
Returns:
текущий цвет фона Graphics2D Color.
See Also:
  • setBackground(java.awt.Color)

getStroke

public abstract Stroke getStroke()
Возвращает текущий стиль линии Stroke в контексте Graphics2D.
Returns:
текущий стиль линии Graphics2D Stroke.
See Also:
  • setStroke(java.awt.Stroke)
END_OF_DOCUMENT_MARKER

clip

public abstract void clip(Shape s)
Пересекает текущий Clip с внутренностью указанной Shape и устанавливает Clip в результате пересечения. Указанная Shape преобразуется с помощью текущего Graphics2D Transform перед пересечением с текущим Clip. Этот метод используется для уменьшения текущего Clip. Чтобы увеличить Clip, используйте setClip.

Клип пользователя, изменённый этим методом, не зависит от обрезки, связанной с границами устройства и видимостью. Если клип ранее не был установлен или был очищен с помощью setClip с аргументом null, указанная Shape становится новым клипом пользователя.

Поскольку этот метод пересекает указанную фигуру с текущим клипом, он выбросит NullPointerException для фигуры null, если клип пользователя также не null. Поэтому вызов этого метода с аргументом null не рекомендуется.

Parameters:
s - Shape, пересекающаяся с текущим Clip. Этот метод обновляет текущий Clip.
Throws:
NullPointerException - если s является null и клип пользователя в настоящее время установлен.

getFontRenderContext

public abstract FontRenderContext getFontRenderContext()
Получить контекст отрисовки Font в этом контексте Graphics2D. FontRenderContext содержит служебные подсказки приложения, такие как антиалиасинг и дробные метрики, а также информацию о целевом устройстве, такую как точки на дюйм. Эта информация должна предоставляться приложением при использовании объектов, выполняющих типографическое форматирование, таких как Font и TextLayout. Эта информация также должна предоставляться приложениями, которые выполняют собственное форматирование и нуждаются в точных измерениях различных характеристик глифов, таких как отступ и высота строки, когда к рендерингу текста применяются различные параметры рендеринга.
Returns:
ссылка на экземпляр FontRenderContext.
Since:
1.2
See Also:
  • FontRenderContext
  • Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
  • TextLayout

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/Graphics2D.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API