Spec-Zone.ru › OpenJDK 17

Класс 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. Если в метод 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
Без обрезки отрисовки, результат ограничивается Component.

Вопросы совместимости отрисовки

Модель отрисовки JDK(tm) 1.1 основана на модели пикселизации, которая определяет, что координаты бесконечно тонки, расположены между пикселями. Операции отрисовки выполняются с использованием кисти шириной в один пиксель, заполняющей пиксель ниже и правее точки привязки на пути. Модель отрисовки JDK 1.1 согласуется со возможностями большинства существующих платформ рендереров, которые должны преобразовать целые координаты в дискретную кисть, которая должна полностью лежать на указанном количестве пикселей.

API Java 2D(tm) (Java(tm) 2 платформа) поддерживает рендереры с антиалиасингом. Перо шириной в один пиксель необязательно должно полностью попадать на пиксель N по сравнению с пикселем N+1. Перо может частично попадать на оба пикселя. Не требуется выбирать направление смещения для широкого пера, так как смешивание, происходящее вдоль границ прохождения пера, делает положение пера в подпикселях видимым для пользователя. С другой стороны, при отключенном антиалиасинге путем установки ключа подсказки KEY_ANTIALIASING со значением подсказки VALUE_ANTIALIAS_OFF, рендерер может потребоваться применить смещение, чтобы определить, какой пиксель модифицировать, когда перо пересекает границу пикселя, например, когда оно нарисовано по целочисленной координате в пространстве устройства. Хотя возможности рендерера с антиалиасингом делают необязательным для модели рендеринга указание смещения пера, желательно, чтобы рендереры с антиалиасингом и без него выполняли аналогичные действия в общих случаях рисования горизонтальных и вертикальных линий шириной в один пиксель на экране. Чтобы гарантировать, что включение антиалиасинга путем установки ключа подсказки KEY_ANTIALIASING на VALUE_ANTIALIAS_ON не приведет к внезапному увеличению ширины таких линий вдвое и уменьшению их непрозрачности вдвое, желательно, чтобы модель указала траекторию для таких линий, чтобы они полностью покрывали определенный набор пикселей, что поможет повысить их четкость.

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

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

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

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

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

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

  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)
Перезаписывает Transform в контексте 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 если изображение полностью загружено и полностью отрисовано, или если оно равно null; false если изображение всё ещё загружается.
См. также:
  • 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);
 
Параметры:
op - фильтр, применяемый к изображению перед отрисовкой
img - указанное BufferedImage для отрисовки. Этот метод ничего не делает, если img равно null.
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 - текст для отрисовки
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)
  • Graphics.setColor(java.awt.Color)
  • setTransform(java.awt.geom.AffineTransform)
  • setComposite(java.awt.Composite)
  • Graphics.setClip(int, int, int, int)

drawString

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

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

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 - глифы для отрисовки
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 равно false, этот метод проверяет, пересекается ли внутренняя область заданной Shape с указанным Rectangle. Если onStroke равно true, этот метод проверяет, пересекается ли Stroke контура указанной Shape с указанным Rectangle. Учитываются атрибуты отображения Clip, Transform, и Stroke.
Параметры:
rect - область в пространстве устройства для проверки на попадание
s - проверяемая Shape
onStroke - флаг, используемый для выбора между проверкой обведённой или залитой фигуры. Если флаг равен true, проверяется контур Stroke. Если флаг равен false, проверяется заполненная Shape.
Возвращает:
true если есть попадание; false в противном случае.
См. также:
  • setStroke(java.awt.Stroke)
  • fill(java.awt.Shape)
  • draw(java.awt.Shape)
  • transform(java.awt.geom.AffineTransform)
  • setTransform(java.awt.geom.AffineTransform)
  • clip(java.awt.Shape)
  • Graphics.setClip(int, int, int, int)

getDeviceConfiguration

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

setComposite

public abstract void setComposite(Composite comp)
Устанавливает Composite для контекста Graphics2D. Composite используется во всех методах рисования, таких как drawImage, drawString, draw, и fill. Он определяет, как новые пиксели будут комбинироваться с существующими пикселями на графическом устройстве во время процесса отрисовки.

Если данный контекст 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

установитьЗаливу

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

установитьОбводку

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

установитьПараметрОтрисовки

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

получитьПараметрОтрисовки

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

установитьПараметрыОтрисовки

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

добавитьПараметрыОтрисовки

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 инкапсулирует параметры приложения, такие как антиалиасинг и дробные метрики, а также информацию о целевом устройстве, такую как точки на дюйм. Эту информацию должно предоставлять приложение при использовании объектов, выполняющих типографическую обработку, таких как Font и TextLayout. Эту информацию также должны предоставлять приложения, выполняющие собственный макет и нуждающиеся в точных измерениях различных характеристик глифов, таких как отступ и высота строки, когда к рендерингу текста применяются различные параметры рендеринга.
Возвращает:
ссылка на экземпляр FontRenderContext.
С:
1.2
См. также:
  • FontRenderContext
  • Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
  • TextLayout

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

Spec-Zone.ru

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