Класс 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. Рендеринг может оптимизировать многие из этих шагов, например, кэшируя результаты для будущих вызовов, сводя несколько виртуальных шагов в одну операцию или распознавая различные атрибуты как общие простые случаи, которые могут быть исключены путём изменения других частей операции. Шаги процесса отрисовки:
- Определить, что отрисовать.
- Ограничить операцию отрисовки текущим
Clip.Clipзадается объектомShapeв пространстве пользователя и управляется программой с помощью различных методов управления обрезкойGraphicsиGraphics2D. Эта обрезка пользователя преобразуется в пространство устройства текущимTransformи объединяется с обрезкой устройства, которая определяется видимостью окон и границ устройства. Объединение обрезки пользователя и обрезки устройства определяет общую обрезку, которая определяет конечную область обрезки. Обрезка пользователя не изменяется системой рендеринга для отражения полученной общей обрезки. - Определить цвета для отрисовки.
- Применить цвета к целевой поверхности рисования с использованием текущего атрибута
Compositeв контекстеGraphics2D.
Три типа операций отрисовки, вместе с деталями каждого из их особых процессов отрисовки:
-
Shapeоперации- Если операция является
draw(Shape)операцией, то методcreateStrokedShapeтекущего атрибутаStrokeв контекстеGraphics2Dиспользуется для построения нового объектаShape, который содержит контур указанной фигурыShape. -
Shapeпреобразуется из пространства пользователя в пространство устройства с использованием текущегоTransformв контекстеGraphics2D. - Контур
Shapeизвлекается с помощью методаgetPathIteratorобъектаShape, который возвращает объектPathIterator, итерирующий по границеShape. - Если объект
Graphics2Dне может обработать криволинейные сегменты, возвращаемые объектомPathIterator, то он может вызвать альтернативный методgetPathIteratorобъектаShape, который сглаживаетShape. - Текущий атрибут
Paintв контекстеGraphics2Dзапрашивается на получение объектаPaintContext, который определяет цвета для отрисовки в пространстве устройства.
- Если операция является
- Операции с текстом
- Следующие шаги используются для определения набора глифов, необходимых для отрисовки указанного
String:- Если аргумент является
String, то текущий атрибутFontв контекстеGraphics2Dзапрашивается на преобразование символов Юникода вStringв набор глифов для вывода с использованием базовых алгоритмов выравнивания и форматирования шрифта. - Если аргумент является объектом
AttributedCharacterIterator, то от него запрашивается преобразование себя вTextLayoutс использованием встроенных атрибутов шрифта.TextLayoutреализует более сложные алгоритмы выравнивания глифов, которые автоматически выполняют корректировки выравнивания Unicode для множественных шрифтов с различными направлениями письма. - Если аргумент является объектом
GlyphVector, то объектGlyphVectorуже содержит соответствующие глифы шрифта с явными координатами для расположения каждого глифа.
- Если аргумент является
- Текущий атрибут
Fontзапрашивается на получение контуров указанных глифов. Эти контуры рассматриваются как фигуры в пространстве пользователя относительно позиции каждого глифа, определённой на шаге 1. - Контуры символов заполняются, как указано выше в
Shapeоперациях. - Текущий атрибут
Paintзапрашивается на получение объектаPaintContext, который определяет цвета для отрисовки в пространстве устройства.
- Следующие шаги используются для определения набора глифов, необходимых для отрисовки указанного
-
Imageоперации- Область интереса определяется ограничивающей прямоугольной областью исходного
Image. Эта ограничивающая прямоугольная область задаётся в пространстве изображения, которое является локальной системой координат объектаImage. - Если в метод
drawImage(Image, AffineTransform, ImageObserver)передаётся объектAffineTransform, тоAffineTransformиспользуется для преобразования ограничивающей прямоугольной области из пространства изображения в пространство пользователя. Если объектAffineTransformне указан, ограничивающая прямоугольная область рассматривается как уже находящаяся в пространстве пользователя. - Ограничивающая прямоугольная область исходного
Imageпреобразуется из пространства пользователя в пространство устройства с использованием текущегоTransform. Обратите внимание, что результат преобразования ограничивающей прямоугольной области не обязательно приводит к прямоугольной области в пространстве устройства. - Объект
Imageопределяет, какие цвета отрисовать, выбирая их в соответствии с отображением координат источника на назначения, определяемым текущим атрибутомTransformи необязательным преобразованием изображения.
- Область интереса определяется ограничивающей прямоугольной областью исходного
Атрибуты отрисовки по умолчанию
Значения по умолчанию для атрибутов отрисовкиGraphics2D: -
Paint - Цвет
Component. -
Font - Ширина
FontComponent. -
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 определяет два метода для управления тем, как цвета применяются к месту назначения.
- Метод
setPaintModeреализован как метод-обёртка для установки значения по умолчаниюComposite, эквивалентногоsetComposite(new AlphaComposite.SrcOver). - Метод
setXORMode(Color xorcolor)реализован как метод-обёртка для установки специального объектаComposite, который игнорирует компонентыAlphaисходных цветов и устанавливает цвет назначения в значение:dstpixel = (PixelOf(srccolor) ^ PixelOf(xorcolor) ^ dstpixel);
- См. также:
RenderingHints
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | Graphics2D() | Создаёт новый объект |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract void | addRenderingHints(Map<?,?> hints) | Устанавливает значения произвольного количества параметров для алгоритмов отрисовки. |
abstract void | clip(Shape s) | Пересекает текущую |
abstract void | draw(Shape s) | Отображает контур |
void | draw3DRect(int x,
int y,
int width,
int height,
boolean raised) | Отрисовывает 3D-подсветленный контур указанного прямоугольника. |
abstract void | drawGlyphVector(GlyphVector g,
float x,
float y) | Отображает текст указанного |
abstract void | drawImage(BufferedImage img,
BufferedImageOp op,
int x,
int y) | Отображает |
abstract boolean | drawImage(Image img,
AffineTransform xform,
ImageObserver obs) | Отображает изображение, применяя преобразование из пространства изображения в пространство пользователя перед отрисовкой. |
abstract void | drawRenderableImage(RenderableImage img,
AffineTransform xform) | Отображает |
abstract void | drawRenderedImage(RenderedImage img,
AffineTransform xform) | Отображает |
abstract void | drawString(String str,
float x,
float y) | Отображает текст, заданный указанным |
abstract void | drawString(String str,
int x,
int y) | Отображает текст указанного |
abstract void | drawString(AttributedCharacterIterator iterator,
float x,
float y) | Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса |
abstract void | drawString(AttributedCharacterIterator iterator,
int x,
int y) | Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса |
abstract void | fill(Shape s) | Заливает внутреннюю область |
void | fill3DRect(int x,
int y,
int width,
int height,
boolean raised) | Рисует 3D-подсветленный прямоугольник, заполненный текущим цветом. |
abstract Color | getBackground() | Возвращает цвет фона, используемый для очистки области. |
abstract Composite | getComposite() | Возвращает текущий |
abstract GraphicsConfiguration | getDeviceConfiguration() | Возвращает конфигурацию устройства, связанную с этим |
abstract FontRenderContext | getFontRenderContext() | Получает контекст отрисовки |
abstract Paint | getPaint() | Возвращает текущий |
abstract Object | getRenderingHint(RenderingHints.Key hintKey) | Возвращает значение одного параметра для алгоритмов отрисовки. |
abstract RenderingHints | getRenderingHints() | Получает параметры для алгоритмов отрисовки. |
abstract Stroke | getStroke() | Возвращает текущий |
abstract AffineTransform | getTransform() | Возвращает копию текущего |
abstract boolean | hit(Rectangle rect,
Shape s,
boolean onStroke) | Проверяет, пересекается ли указанная |
abstract void | rotate(double theta) | Конкатенирует текущую |
abstract void | rotate(double theta,
double x,
double y) | Конкатенирует текущую |
abstract void | scale(double sx,
double sy) | Конкатенирует текущую |
abstract void | setBackground(Color color) | Устанавливает цвет фона для контекста |
abstract void | setComposite(Composite comp) | Устанавливает |
abstract void | setPaint(Paint paint) | Устанавливает атрибут |
abstract void | setRenderingHint(RenderingHints.Key hintKey,
Object hintValue) | Устанавливает значение одного параметра для алгоритмов отрисовки. |
abstract void | setRenderingHints(Map<?,?> hints) | Заменяет значения всех параметров для алгоритмов отрисовки заданными |
abstract void | setStroke(Stroke s) | Устанавливает |
abstract void | setTransform(AffineTransform Tx) | Перезаписывает Преобразование в контексте |
abstract void | shear(double shx,
double shy) | Конкатенирует текущую |
abstract void | transform(AffineTransform Tx) | Объединяет объект |
abstract void | translate(double tx,
double ty) | Конкатенирует текущее |
abstract void | translate(int x,
int 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