Spec-Zone.ru › OpenJDK 8

Класс Graphics2D

  • java.lang.Object
    • java.awt.Graphics
      • java.awt.Graphics2D

public abstract class Graphics2D
extends Graphics

Этот Graphics2D класс расширяет класс Graphics, предоставляя более сложный контроль над геометрией, преобразованиями координат, управлением цветом и выкладкой текста. Это основной класс для отрисовки двумерных фигур, текста и изображений на платформе Java(tm).

Пространства координат

Все координаты, передаваемые объекту Graphics2D, задаются в независимой от устройства системе координат, называемой пространством пользователя, которая используется приложениями. Объект Graphics2D содержит объект AffineTransform в качестве части своего состояния отрисовки, определяющего способ преобразования координат из пространства пользователя в зависимые от устройства координаты пространства устройства.

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

Некоторые операции, выполняемые объектами атрибутов отрисовки, происходят в пространстве устройства, но все методы Graphics2D принимают координаты пространства пользователя.

Каждый объект Graphics2D связан с целевым объектом, который определяет место, где происходит отрисовка. Объект GraphicsConfiguration определяет характеристики целевого объекта отрисовки, такие как формат пикселей и разрешение. Один и тот же целевой объект отрисовки используется на протяжении всего жизненного цикла объекта Graphics2D.

При создании объекта Graphics2D объект GraphicsConfiguration указывает преобразование по умолчанию для целевого объекта Graphics2D (объекта Component или Image). Это преобразование по умолчанию отображает систему координат пространства пользователя на координаты устройства экрана и принтера таким образом, что начало отсчета отображается в левом верхнем углу целевой области устройства, увеличивающиеся координаты X простираются вправо, а увеличивающиеся координаты Y простираются вниз. Масштабирование преобразования по умолчанию устанавливается в единичное значение для устройств, близких к 72 dpi, таких как устройства экрана. Масштабирование преобразования по умолчанию устанавливается приблизительно в 72 координаты пространства пользователя на квадратный дюйм для устройств с высоким разрешением, таких как принтеры. Для буферов изображений преобразование по умолчанию является преобразованием Identity.

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

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

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

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

Три типа операций отрисовки, вместе с деталями каждого из их специфических процессов отрисовки:
  1. Shape операции
    1. Если операция является draw(Shape) операцией, то метод createStrokedShape текущего атрибута Stroke в контексте Graphics2D используется для построения нового объекта Shape, содержащего контур указанной фигуры Shape.
    2. Shape преобразуется из пространства пользователя в пространство устройства с использованием текущего Transform в контексте Graphics2D.
    3. Контур Shape извлекается с помощью метода getPathIterator объекта Shape, который возвращает объект PathIterator, который итеративно проходит по границе Shape.
    4. Если объект Graphics2D не может обработать криволинейные сегменты, которые возвращает объект PathIterator, то он может вызвать альтернативный метод getPathIterator объекта Shape, который сглаживает Shape.
    5. Текущий объект Paint в контексте Graphics2D запрашивается на объект PaintContext, который определяет цвета для отрисовки в пространстве устройства.
  2. Операции с текстом
    1. Следующие шаги используются для определения набора глифов, необходимых для отрисовки указанного String:
      1. Если аргумент является String, то текущий объект Font в контексте Graphics2D запрашивается для преобразования символов Юникода в String в набор глифов для представления с использованием базовых алгоритмов выкладки и форматирования шрифта.
      2. Если аргумент является объектом AttributedCharacterIterator, то итератор запрашивается на преобразование себя в TextLayout с использованием встроенных атрибутов шрифта. Объект TextLayout реализует более сложные алгоритмы выкладки глифов, которые автоматически выполняют корректировки выкладки Юникода в обе стороны для нескольких шрифтов с различными направлениями письма.
      3. Если аргумент является объектом GlyphVector, то объект GlyphVector уже содержит соответствующие глифы шрифта со явными координатами положения каждого глифа.
    2. Текущий объект Font запрашивается для получения контуров указанных глифов. Эти контуры обрабатываются как фигуры в пространстве пользователя относительно положения каждого глифа, определенного на шаге 1.
    3. Контуры символов заполняются, как указано выше в Shape операциях.
    4. Текущий объект Paint запрашивается на объект PaintContext, который определяет цвета для отрисовки в пространстве устройства.
  3. Image Операции
    1. Область интереса определяется ограничивающим прямоугольником исходного Image. Этот ограничивающий прямоугольник задается в пространстве изображения, которое является локальной системой координат объекта Image.
    2. Если AffineTransform передается в метод drawImage(Image, AffineTransform, ImageObserver), то AffineTransform используется для преобразования ограничивающего прямоугольника из пространства изображения в пространство пользователя. Если AffineTransform не предоставлен, ограничивающий прямоугольник рассматривается как уже находящийся в пространстве пользователя.
    3. Ограничивающий прямоугольник исходного Image преобразуется из пространства пользователя в пространство устройства с помощью текущего Transform. Обратите внимание, что результат преобразования ограничивающего прямоугольника не обязательно приводит к прямоугольной области в пространстве устройства.
    4. Объект Image определяет цвета для отрисовки, с выборкой в соответствии с отображением координат от источника к цели, заданной текущим Transform и необязательным преобразованием изображения.

Атрибуты отрисовки по умолчанию

Значения по умолчанию для атрибутов отрисовки Graphics2D следующие:
Paint
Цвет Component.
Font
Цвет Font Component.
Stroke
Квадратная ручка с шириной линии 1, без пунктира, соединением отрезков по методу «фаска» и квадратными наконечниками.
Transform
Преобразование getDefaultTransform для GraphicsConfiguration Component.
Composite
Правило AlphaComposite.SRC_OVER.
Clip
Отсутствует отрисовка Clip, вывод обрезается до Component.

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

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

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

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

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

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

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

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

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

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

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

Модификатор Конструктор и описание
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(AttributedCharacterIterator iterator, float x, float y)

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

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

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

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

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

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

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

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)

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

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

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

fill3DRect

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

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

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

draw

public abstract void draw(Shape s)

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

Параметры:
s - Shape, который необходимо отобразить
См. также:
setStroke(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
С:
JDK1.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 ложно, этот метод проверяет, пересекается ли внутренняя область указанного Shape с указанным Rectangle. Если onStroke истинно, этот метод проверяет, пересекается ли контур указанного 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
С:
JDK1.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()

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

Возвращает:
текущее преобразование в контексте Graphics2D.
См. также:
transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform)

getPaint

public abstract Paint getPaint()

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

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

getComposite

public abstract Composite getComposite()

Возвращает текущую операцию наложения в контексте 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()

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

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

clip

public abstract void clip(Shape s)

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

Параметры:
s — фигура, которая пересекается с текущей областью обрезки. Если 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, 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.

Spec-Zone.ru

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