Spec-Zone.ru › OpenJDK 25

Класс 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 точкам на дюйм, например экранных устройств. Для устройств с высоким разрешением, таких как принтеры, масштабирование преобразования по умолчанию устанавливается приблизительно в 72 пользовательские координаты на квадратный дюйм. Для буферов изображений преобразованием по умолчанию является преобразование Identity.

Процесс отрисовки

Процесс отрисовки можно разделить на четыре этапа, управляемых атрибутами отрисовки Graphics2D. Средство отрисовки может оптимизировать многие из этих этапов: кэшировать результаты для будущих вызовов, объединять несколько виртуальных этапов в одну операцию или распознавать различные атрибуты как распространённые простые случаи, которые можно исключить, изменив другие части операции.

Этапы процесса отрисовки:

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

Три типа операций отрисовки и подробное описание соответствующих процессов отрисовки:
  1. Операции Shape
    1. Если операция является операцией draw(Shape), для создания нового объекта Shape, содержащего контур указанного объекта Shape, используется метод createStrokedShape текущего атрибута Stroke в контексте Graphics2D.
    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 поручается преобразовать символы Unicode в объекте String в набор глифов для отображения с использованием базовых алгоритмов компоновки и формирования формы, реализованных шрифтом.
      2. Если аргумент является объектом AttributedCharacterIterator, итератору поручается преобразовать себя в объект TextLayout с использованием встроенных атрибутов шрифта. Объект TextLayout реализует более сложные алгоритмы размещения глифов, которые автоматически выполняют корректировку двунаправленной компоновки Unicode для нескольких шрифтов с разными направлениями письма.
      3. Если аргумент является объектом GlyphVector, объект GlyphVector уже содержит соответствующие коды глифов для конкретного шрифта, а также явные координаты положения каждого глифа.
    2. У текущего Font запрашиваются контуры указанных глифов. Эти контуры рассматриваются как фигуры пользовательского пространства относительно положения каждого глифа, определённого на шаге 1.
    3. Контуры символов заполняются так, как описано выше в разделе Операции Shape.
    4. У текущего Paint запрашивается объект PaintContext, задающий цвета для отрисовки в пространстве устройства.
  3. Операции с изображениями Image
    1. Область интереса определяется ограничивающим прямоугольником исходного объекта Image. Этот ограничивающий прямоугольник задаётся в пространстве изображения, которое является локальной системой координат объекта Image.
    2. Если в метод drawImage(Image, AffineTransform, ImageObserver) передан объект AffineTransform, объект 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 такие линии внезапно не становились вдвое шире и вдвое прозрачнее, желательно, чтобы модель задавала для таких линий контур, полностью покрывающий определённый набор пикселей и повышающий чёткость линий.

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

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

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

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

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

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

  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)
Рисует выделенный трёхмерный контур указанного прямоугольника.
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)
Рисует выделенный трёхмерный прямоугольник, заполненный текущим цветом.
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) текущей системы координат.

Методы, объявленные в классе 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

Методы, объявленные в классе 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)
Рисует контур указанного прямоугольника с трехмерной подсветкой. Края прямоугольника подсвечиваются так, чтобы казаться скошенными и освещенными из верхнего левого угла.

Цвета, используемые для эффекта подсветки, определяются на основе текущего цвета. Полученный прямоугольник занимает область шириной 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)
Рисует заполненный текущим цветом прямоугольник с трехмерной подсветкой. Края прямоугольника подсвечиваются так, чтобы казаться скошенными и освещенными из верхнего левого угла. Цвета, используемые для эффекта подсветки и заливки, определяются на основе текущего объекта 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(Stroke)
  • setPaint(Paint)
  • Graphics.setColor(Color)
  • transform(AffineTransform)
  • setTransform(AffineTransform)
  • clip(Shape)
  • Graphics.setClip(int, int, int, int)
  • setComposite(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(AffineTransform)
  • setTransform(AffineTransform)
  • setComposite(Composite)
  • clip(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(AffineTransform)
  • setTransform(AffineTransform)
  • setComposite(Composite)
  • clip(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(AffineTransform)
  • setTransform(AffineTransform)
  • setComposite(Composite)
  • clip(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(AffineTransform)
  • setTransform(AffineTransform)
  • setComposite(Composite)
  • clip(Shape)
  • Graphics.setClip(int, int, int, int)
  • drawRenderedImage(RenderedImage, 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(Paint)
  • Graphics.setColor(Color)
  • Graphics.setFont(Font)
  • setTransform(AffineTransform)
  • setComposite(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(Paint)
  • Graphics.setColor(Color)
  • setTransform(AffineTransform)
  • setComposite(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(Paint)
  • Graphics.setColor(Color)
  • setTransform(AffineTransform)
  • setComposite(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(FontRenderContext, String)
  • GlyphVector
  • setPaint(Paint)
  • Graphics.setColor(Color)
  • setTransform(AffineTransform)
  • setComposite(Composite)
  • Graphics.setClip(int, int, int, int)

fill

public abstract void fill(Shape s)
Заполняет внутреннюю область объекта Shape, используя настройки контекста Graphics2D. Применяемые атрибуты отрисовки включают Clip, Transform, Paint и Composite.
Параметры:
s — объект Shape для заливки
См. также:
  • setPaint(Paint)
  • Graphics.setColor(Color)
  • transform(AffineTransform)
  • setTransform(AffineTransform)
  • setComposite(Composite)
  • clip(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(Stroke)
  • fill(Shape)
  • draw(Shape)
  • transform(AffineTransform)
  • setTransform(AffineTransform)
  • clip(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(Color)
  • Graphics.setPaintMode()
  • getComposite()
  • AlphaComposite

setPaint

public abstract void setPaint(Paint paint)
Задает атрибут Paint для контекста Graphics2D. Вызов этого метода с объектом null Paint не влияет на текущий атрибут Paint этого объекта Graphics2D.
Параметры:
paint — объект Paint, используемый для генерации цвета в процессе отрисовки, или null
См. также:
  • Graphics.setColor(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. Все координаты, используемые в последующих операциях рендеринга в этом графическом контексте, отсчитываются от этого нового начала координат.
Определено в:
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(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(AffineTransform)
  • getTransform()
  • AffineTransform

getTransform

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

getPaint

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

getComposite

public abstract Composite getComposite()
Возвращает текущее значение Composite в контексте Graphics2D.
Возвращает:
текущее значение Graphics2D Composite, определяющее стиль композиции.
См. также:
  • setComposite(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(Color)

getStroke

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

clip

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

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

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

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

getFontRenderContext

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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

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

Spec-Zone.ru

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