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

Проблемы совместимости отрисовки

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

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

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

Конструкторы

Модификатор Конструктор Описание
protected Graphics2D()

Создаёт новый объект Graphics2D.

Методы

Модификатор и тип Метод Описание
abstract void addRenderingHints​(Map<?,​?> hints)

Устанавливает значения произвольного количества параметров для алгоритмов отрисовки.

abstract void clip​(Shape s)

Пересекает текущую Clip с внутренностью указанной Shape и устанавливает Clip в полученное пересечение.

abstract void draw​(Shape s)

Отображает контур Shape используя настройки текущего контекста Graphics2D.

void draw3DRect​(int x, int y, int width, int height, boolean raised)

Отрисовывает 3D-подсветленный контур указанного прямоугольника.

abstract void drawGlyphVector​(GlyphVector g, float x, float y)

Отображает текст указанного GlyphVector используя атрибуты отрисовки контекста Graphics2D.

abstract void drawImage​(BufferedImage img, BufferedImageOp op, int x, int y)

Отображает BufferedImage, отфильтрованный с помощью BufferedImageOp.

abstract boolean drawImage​(Image img, AffineTransform xform, ImageObserver obs)

Отображает изображение, применяя преобразование из пространства изображения в пространство пользователя перед отрисовкой.

abstract void drawRenderableImage​(RenderableImage img, AffineTransform xform)

Отображает RenderableImage, применяя преобразование из пространства изображения в пространство пользователя перед отрисовкой.

abstract void drawRenderedImage​(RenderedImage img, AffineTransform xform)

Отображает RenderedImage, применяя преобразование из пространства изображения в пространство пользователя перед отрисовкой.

abstract void drawString​(String str, float x, float y)

Отображает текст, заданный указанным String, используя текущее состояние атрибутов текста в контексте Graphics2D.

abstract void drawString​(String str, int x, int y)

Отображает текст указанного String, используя текущее состояние атрибутов текста в контексте Graphics2D.

abstract void drawString​(AttributedCharacterIterator iterator, float x, float y)

Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса TextAttribute.

abstract void drawString​(AttributedCharacterIterator iterator, int x, int y)

Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса TextAttribute.

abstract void fill​(Shape s)

Заливает внутреннюю область Shape используя настройки контекста Graphics2D.

void fill3DRect​(int x, int y, int width, int height, boolean raised)

Рисует 3D-подсветленный прямоугольник, заполненный текущим цветом.

abstract Color getBackground()

Возвращает цвет фона, используемый для очистки области.

abstract Composite getComposite()

Возвращает текущий Composite в контексте Graphics2D.

abstract GraphicsConfiguration getDeviceConfiguration()

Возвращает конфигурацию устройства, связанную с этим Graphics2D.

abstract FontRenderContext getFontRenderContext()

Получает контекст отрисовки Font в контексте Graphics2D.

abstract Paint getPaint()

Возвращает текущий Paint контекста Graphics2D.

abstract Object getRenderingHint​(RenderingHints.Key hintKey)

Возвращает значение одного параметра для алгоритмов отрисовки.

abstract RenderingHints getRenderingHints()

Получает параметры для алгоритмов отрисовки.

abstract Stroke getStroke()

Возвращает текущий Stroke в контексте Graphics2D.

abstract AffineTransform getTransform()

Возвращает копию текущего Transform в контексте Graphics2D.

abstract boolean hit​(Rectangle rect, Shape s, boolean onStroke)

Проверяет, пересекается ли указанная Shape с указанным Rectangle, который находится в пространстве устройства.

abstract void rotate​(double theta)

Конкатенирует текущую Graphics2D Transform с поворотным преобразованием.

abstract void rotate​(double theta, double x, double y)

Конкатенирует текущую Graphics2D Transform с переведённым поворотным преобразованием.

abstract void scale​(double sx, double sy)

Конкатенирует текущую Graphics2D Transform с масштабирующим преобразованием. Последующая отрисовка масштабируется в соответствии с указанными коэффициентами масштабирования относительно предыдущего масштабирования.

abstract void setBackground​(Color color)

Устанавливает цвет фона для контекста Graphics2D.

abstract void setComposite​(Composite comp)

Устанавливает Composite для контекста Graphics2D.

abstract void setPaint​(Paint paint)

Устанавливает атрибут Paint для контекста Graphics2D.

abstract void setRenderingHint​(RenderingHints.Key hintKey, Object hintValue)

Устанавливает значение одного параметра для алгоритмов отрисовки.

abstract void setRenderingHints​(Map<?,​?> hints)

Заменяет значения всех параметров для алгоритмов отрисовки заданными hints.

abstract void setStroke​(Stroke s)

Устанавливает Stroke для контекста Graphics2D.

abstract void setTransform​(AffineTransform Tx)

Перезаписывает Преобразование в контексте Graphics2D.

abstract void shear​(double shx, double shy)

Конкатенирует текущую Graphics2D Transform с преобразованием сдвига.

abstract void transform​(AffineTransform Tx)

Объединяет объект AffineTransform с Transform в этом Graphics2D согласно правилу последнего указанного - первого применённого.

abstract void translate​(double tx, double ty)

Конкатенирует текущее Graphics2D Transform с преобразованием перемещения.

abstract void translate​(int x, int y)

Перемещает начало координат контекста Graphics2D в точку (x, y) в текущей системе координат.

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

clearRect, clipRect, copyArea, create, create, dispose, drawArc, drawBytes, drawChars, drawImage, drawImage, drawImage, drawImage, drawImage, drawImage, drawLine, drawOval, drawPolygon, drawPolygon, drawPolyline, drawRect, drawRoundRect, fillArc, fillOval, fillPolygon, fillPolygon, fillRect, fillRoundRect, finalize, getClip, getClipBounds, getClipBounds, getClipRect, getColor, getFont, getFontMetrics, getFontMetrics, hitClip, setClip, setClip, setColor, setFont, setPaintMode, setXORMode, toString

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

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

Конструкторы

Graphics2D

protected Graphics2D()

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

См. также:
Component.getGraphics(), Graphics.create()

Методы

draw3DRect

public void draw3DRect(int x,
                       int y,
                       int width,
                       int height,
                       boolean raised)

Рисует 3D-выделенную границу заданного прямоугольника. Края прямоугольника выделяются так, что они кажутся скошенными и освещенными сверху слева.

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

Overrides:
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.

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

draw

public abstract void draw(Shape s)

Отображает контур Shape используя настройки текущего Graphics2D контекста. Применяемые атрибуты рендеринга включают в себя Clip, Transform, Paint, Composite и Stroke атрибуты.

Параметры:
s - Shape для рендеринга
См. также:
setStroke(java.awt.Stroke), setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), clip(java.awt.Shape), Graphics.setClip(int, int, int, int), setComposite(java.awt.Composite)

drawImage

public abstract boolean drawImage(Image img,
                                  AffineTransform xform,
                                  ImageObserver obs)

Отображает изображение, применяя преобразование из пространства изображения в пространство пользователя перед рисованием. Преобразование из пространства пользователя в пространство устройства выполняется с помощью текущего Transform в Graphics2D. Указанное преобразование применяется к изображению перед применением атрибута преобразования в Graphics2D контексте. Применяемые атрибуты рендеринга включают Clip, Transform и Composite атрибуты. Обратите внимание, что рендеринг не выполняется, если указанное преобразование необратимо.

Параметры:
img - указанное изображение для рендеринга. Этот метод ничего не делает, если img равно null.
xform - преобразование из пространства изображения в пространство пользователя
obs - ImageObserver для уведомления о дальнейшем преобразовании Image
Возвращает:
true если Image полностью загружено и полностью отрисовано, или если оно равно null; false если Image всё ещё загружается.
См. также:
transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)

drawImage

public abstract void drawImage(BufferedImage img,
                               BufferedImageOp op,
                               int x,
                               int y)

Отображает BufferedImage отфильтрованное с помощью BufferedImageOp. Применяемые атрибуты рендеринга включают в себя Clip, Transform и Composite атрибуты. Эквивалентно:

img1 = op.filter(img, null);
 drawImage(img1, new AffineTransform(1f,0f,0f,1f,x,y), null);

Параметры:
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.

Параметры:
img - изображение для рендеринга. Этот метод ничего не делает, если img равно null.
xform - преобразование из пространства изображения в пространство пользователя
См. также:
transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int), drawRenderedImage(java.awt.image.RenderedImage, java.awt.geom.AffineTransform)

drawString

public abstract void drawString(String str,
                                int x,
                                int y)

Отображает текст указанного String, используя текущее состояние атрибутов текста в Graphics2D контексте. Базовая линия первого символа находится в позиции (x, y) в пространстве пользователя. Применяемые атрибуты рендеринга включают в себя Clip, Transform, Paint, Font и Composite атрибуты. Для символов в таких системах письма, как иврит и арабский, глифы могут отображаться справа налево, в этом случае предоставленная координата — это расположение самого левого символа на базовой линии.

Указано:
drawString в классе Graphics
Параметры:
str - строка, подлежащая отображению
x - координата x местоположения, где должно отображаться String
y - координата y местоположения, где должно отображаться String
Выбрасывает:
NullPointerException - если str имеет значение null
С тех пор:
1.0
См. также:
Graphics.drawBytes(byte[], int, int, int, int), Graphics.drawChars(char[], int, int, int, int)

drawString

public abstract void drawString(String str,
                                float x,
                                float y)

Отображает текст, заданный указанной String, используя текущее состояние атрибутов текста в контексте Graphics2D. Базовая линия первого символа находится в позиции (x, y) в пользовательском пространстве. Применяемые атрибуты отображения включают Clip, Transform, Paint, Font и Composite атрибуты. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево, в этом случае указанная координата — это положение левого символа на базовой линии.

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

drawString

public abstract void drawString(AttributedCharacterIterator iterator,
                                int x,
                                int y)

Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса TextAttribute.

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

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

drawString

public abstract void drawString(AttributedCharacterIterator iterator,
                                float x,
                                float y)

Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса TextAttribute.

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

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

drawGlyphVector

public abstract void drawGlyphVector(GlyphVector g,
                                     float x,
                                     float y)

Отображает текст указанного GlyphVector, используя атрибуты отображения контекста Graphics2D. Применяемые атрибуты отображения включают Clip, Transform, Paint, и Composite атрибуты. GlyphVector указывает отдельные глифы из Font. GlyphVector также может содержать позиции глифов. Это самый быстрый способ отображения набора символов на экране.

Параметры:
g - отображаемый GlyphVector
x - позиция x в пользовательском пространстве, где должны отображаться глифы
y - позиция y в пользовательском пространстве, где должны отображаться глифы
Выбрасывает:
NullPointerException - если g имеет значение null.
См. также:
Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String), GlyphVector, setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)

fill

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

setPaint

public abstract void setPaint(Paint paint)

Устанавливает атрибут Paint для контекста Graphics2D. Вызов этого метода с объектом null Paint не оказывает никакого влияния на текущий атрибут Paint этого объекта Graphics2D.

Параметры:
paint — объект Paint, используемый для генерации цвета во время отрисовки, или null
См. также:
Graphics.setColor(java.awt.Color), getPaint(), GradientPaint, TexturePaint

setStroke

public abstract void setStroke(Stroke s)

Устанавливает Stroke для контекста Graphics2D.

Параметры:
s — объект Stroke, используемый для обводки Shape во время отрисовки
См. также:
BasicStroke, getStroke()

setRenderingHint

public abstract void setRenderingHint(RenderingHints.Key hintKey,
                                      Object hintValue)

Устанавливает значение одного параметра для алгоритмов отрисовки. Категории параметров включают в себя управление качеством отрисовки и общим компромиссом между временем и качеством в процессе отрисовки. Обратитесь к классу RenderingHints для определения некоторых общих ключей и значений.

Параметры:
hintKey — ключ параметра, который необходимо установить.
hintValue — значение, определяющее предпочтения для указанной категории параметров.
См. также:
getRenderingHint(RenderingHints.Key), RenderingHints

getRenderingHint

public abstract Object getRenderingHint(RenderingHints.Key hintKey)

Возвращает значение одного параметра для алгоритмов отрисовки. Категории параметров включают в себя управление качеством отрисовки и общим компромиссом между временем и качеством в процессе отрисовки. Обратитесь к классу RenderingHints для определения некоторых общих ключей и значений.

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

setRenderingHints

public abstract void setRenderingHints(Map<?,​?> hints)

Заменяет значения всех параметров для алгоритмов отрисовки заданным hints. Существующие значения всех параметров отрисовки отбрасываются, и новый набор известных параметров и их значений инициализируется из указанного объекта Map. Категории параметров включают в себя управление качеством отрисовки и общим компромиссом между временем и качеством в процессе отрисовки. Обратитесь к классу RenderingHints для определения некоторых общих ключей и значений.

Параметры:
hints — параметры отрисовки, которые необходимо установить
См. также:
getRenderingHints(), RenderingHints

addRenderingHints

public abstract void addRenderingHints(Map<?,​?> hints)

Устанавливает значения произвольного количества параметров для алгоритмов отрисовки. Изменяются только значения параметров отрисовки, присутствующие в указанном объекте Map. Все остальные параметры, отсутствующие в указанном объекте, остаются неизменными. Категории параметров включают в себя управление качеством отрисовки и общим компромиссом между временем и качеством в процессе отрисовки. Обратитесь к классу RenderingHints для определения некоторых общих ключей и значений.

Параметры:
hints — параметры отрисовки, которые необходимо установить
См. также:
RenderingHints

getRenderingHints

public abstract RenderingHints getRenderingHints()

Получает параметры для алгоритмов отрисовки. Категории параметров включают в себя управление качеством отрисовки и общим компромиссом между временем и качеством в процессе отрисовки. Возвращает все пары ключ/значение параметров, которые когда-либо были указаны в одной операции. Обратитесь к классу RenderingHints для определения некоторых общих ключей и значений.

Возвращает:
ссылка на экземпляр RenderingHints, содержащий текущие параметры.
См. также:
RenderingHints, setRenderingHints(Map)

translate

public abstract void translate(int x,
                               int y)

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

Определено в:
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);
Parameters:
Tx - полученное преобразование из метода getTransform
See Also:
transform(java.awt.geom.AffineTransform), getTransform(), AffineTransform

getTransform

public abstract AffineTransform getTransform()

Возвращает копию текущего преобразования в контексте Graphics2D.

Returns:
текущее преобразование в контексте Graphics2D.
See Also:
transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform)

getPaint

public abstract Paint getPaint()

Возвращает текущую заливку контекста Graphics2D.

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

getComposite

public abstract Composite getComposite()

Возвращает текущий состав в контексте Graphics2D.

Returns:
текущий состав, определяющий стиль композиции.
See Also:
setComposite(java.awt.Composite)

setBackground

public abstract void setBackground(Color color)

Устанавливает цвет фона для контекста Graphics2D. Цвет фона используется для очистки области. Когда контекст Graphics2D создаётся для Component, цвет фона наследуется от Component. Установка цвета фона в контексте Graphics2D влияет только на последующие вызовы clearRect и не затрагивает цвет фона Component. Чтобы изменить фон Component, используйте соответствующие методы Component.

Parameters:
color - цвет фона, который используется в последующих вызовах clearRect
See Also:
getBackground(), Graphics.clearRect(int, int, int, int)

getBackground

public abstract Color getBackground()

Возвращает цвет фона, используемый для очистки области.

Returns:
текущий цвет фона.
See Also:
setBackground(java.awt.Color)

getStroke

public abstract Stroke getStroke()

Возвращает текущий стиль линии в контексте Graphics2D.

Returns:
текущий стиль линии.
See Also:
setStroke(java.awt.Stroke)

clip

public abstract void clip(Shape s)

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

Parameters:
s - фигура для пересечения с текущей областью обрезки. Если s равна null, этот метод очищает текущую область обрезки.

getFontRenderContext

public abstract FontRenderContext getFontRenderContext()

Получение контекста отрисовки шрифта в этом контексте Graphics2D. FontRenderContext encapsulates application hints such as anti-aliasing and fractional metrics, as well as target device specific information such as dots-per-inch. Эта информация должна предоставляться приложением при использовании объектов, выполняющих форматирование текста, таких как Font и TextLayout. Эта информация также должна предоставляться приложениями, которые выполняют собственное форматирование и нуждаются в точных измерениях различных характеристик глифов, таких как отступ и высота строки, когда к отрисовке текста применяются различные подсказки рендеринга.

Returns:
ссылка на экземпляр FontRenderContext.
Since:
1.2
See Also:
FontRenderContext, Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String), TextLayout

© 1993, 2020, 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/11/docs/api/java.desktop/java/awt/Graphics2D.html

Spec-Zone .ru
спецификации, руководства, описания, API