Spec-Zone.ru › OpenJDK 21

Класс 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) поддерживает рендеринг с антиалиасингом. Перо шириной в один пиксель не обязательно должно полностью попадать на пиксель N, в отличие от пикселя N+1. Перо может частично попадать на оба пикселя. Не требуется выбирать направление смещения для широкого пера, так как смешивание, происходящее вдоль границ трассировки пера, делает положение пера под пикселем видимым для пользователя. С другой стороны, при отключении антиалиасинга путем установки ключа подсказки KEY_ANTIALIASING на значение подсказки VALUE_ANTIALIAS_OFF, рендерер может потребовать применения смещения для определения пикселя, который необходимо изменить, когда перо пересекает границу пикселя, например, при рисовании по целочисленной координате в пространстве устройства. Хотя возможности рендерера с антиалиасингом делают необязательным для модели рендеринга указание смещения для пера, желательно, чтобы рендереры с антиалиасингом и без него выполняли аналогично в распространённых случаях рисования горизонтальных и вертикальных линий шириной в один пиксель на экране. Чтобы гарантировать, что включение антиалиасинга путем установки ключа подсказки KEY_ANTIALIASING на VALUE_ANTIALIAS_ON не приводит к внезапному увеличению ширины таких линий в два раза и уменьшению их непрозрачности вдвое, желательно, чтобы модель определяла путь для таких линий, чтобы они полностью покрывали определённый набор пикселей, что поможет повысить их чёткость.

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

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

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

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

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

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

  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.

Parameters:
img - изображение для отрисовки. Этот метод ничего не делает, если img равно null.
xform - преобразование из пространства изображения в пространство пользователя
See Also:
  • 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 атрибуты. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанные координаты соответствуют положению самого левого символа на линии основания.
Specified by:
drawString в классе Graphics
Parameters:
str - строка для отрисовки
x - координата x местоположения, где должна быть отрисована String
y - координата y местоположения, где должна быть отрисована String
Throws:
NullPointerException - если str равен null
Since:
1.0
See Also:
  • 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 атрибуты. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанные координаты соответствуют положению самого левого символа на линии основания.
Parameters:
str - String для отрисовки
x - координата x местоположения, где должна быть отрисована String
y - координата y местоположения, где должна быть отрисована String
Throws:
NullPointerException - если str равен null
See Also:
  • 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) в пространстве пользователя. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанные координаты соответствуют положению самого левого символа на линии основания.

Specified by:
drawString в классе Graphics
Parameters:
iterator - итератор, текст которого необходимо отобразить
x - координата x, где отображается текст итератора
y - координата y, где отображается текст итератора
Throws:
NullPointerException - если iterator равен null
See Also:
  • setPaint(java.awt.Paint)
  • setComposite(java.awt.Composite)
  • 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) в пространстве пользователя. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанные координаты соответствуют положению самого левого символа на линии основания.

Parameters:
iterator - итератор, текст которого необходимо отобразить
x - координата x, где отображается текст итератора
y - координата y, где отображается текст итератора
Throws:
NullPointerException - если iterator равен null
See Also:
  • 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 также может содержать позиции глифов. Это самый быстрый способ отображения набора символов на экране.
Parameters:
g - GlyphVector для отрисовки
x - позиция x в пространстве пользователя, где должны быть отображены глифы
y - позиция y в пространстве пользователя, где должны быть отображены глифы
Throws:
NullPointerException - если g равно null.
See Also:
  • 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 ложно, этот метод проверяет, пересекается ли внутренняя часть указанной Shape с указанным Rectangle. Если onStroke равно true, этот метод проверяет, пересекается ли контур указанной 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. Он определяет, как новые пиксели объединяются с существующими пикселями на устройстве графики во время процесса отрисовки.

Если этот контекст Graphics2D рисует на Component на экране дисплея, и Composite является пользовательским объектом, а не экземпляром класса AlphaComposite, и если установлено управление безопасностью, вызывается его метод checkPermission с разрешением AWTPermission("readDisplayPixels").

Параметры:
comp - объект Composite, используемый для отрисовки
Исключения:
SecurityException - если пользовательский объект Composite используется для отрисовки на экране, и установлено управление безопасностью, и его метод checkPermission не разрешает операцию.
См. также:
  • Graphics.setXORMode(java.awt.Color)
  • Graphics.setPaintMode()
  • getComposite()
  • AlphaComposite
  • SecurityManager.checkPermission(java.security.Permission)
  • AWTPermission

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)
Заменяет значения всех предпочтений для алгоритмов отрисовки указанной картой. Существующие значения всех подсказок отрисовки отбрасываются, и новый набор известных подсказок и значений инициализируется из указанного объекта 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. Все координаты, используемые в последующих операциях отрисовки в этом контексте графики, относятся к этому новому началу координат.
Определено в:
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(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);
 
Параметры:
Tx - AffineTransform, полученный из метода getTransform
См. также:
  • transform(java.awt.geom.AffineTransform)
  • getTransform()
  • AffineTransform

getTransform

public abstract AffineTransform getTransform()
Возвращает копию текущей трансформации Transform в контексте Graphics2D.
Возвращает:
текущая трансформация AffineTransform в контексте Graphics2D.
См. также:
  • transform(java.awt.geom.AffineTransform)
  • setTransform(java.awt.geom.AffineTransform)

getPaint

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

getComposite

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

setBackground

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

getBackground

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

getStroke

public abstract Stroke getStroke()
Возвращает текущую Stroke в контексте Graphics2D.
Возвращает:
текущую Graphics2D Stroke, которая определяет стиль линии.
См. также:
  • setStroke(java.awt.Stroke)

clip

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

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

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

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

getFontRenderContext

public abstract FontRenderContext getFontRenderContext()
Получить контекст отрисовки Font в этом контексте Graphics2D. FontRenderContext encapsulates application hints such as anti-aliasing and fractional metrics, as well as target device-specific information such as dots-per-inch. Эта информация должна предоставляться приложением при использовании объектов, выполняющих типографическое форматирование, таких как Font и TextLayout. Эта информация также должна предоставляться приложениями, которые выполняют свой собственный макет и нуждаются в точных измерениях различных характеристик глифов, таких как отступ и высота строки, когда к рендерингу текста применяются различные подсказки рендеринга.
Возвращает:
ссылка на экземпляр FontRenderContext.
С:
1.2
См. также:
  • FontRenderContext
  • Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
  • TextLayout

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

Spec-Zone.ru

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