Класс 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реализует более сложные алгоритмы выкладки глифов, которые автоматически выполняют корректировки выкладки Юникода в обе стороны для нескольких шрифтов с различными направлениями письма. - Если аргумент является объектом
GlyphVector, то объектGlyphVectorуже содержит соответствующие глифы шрифта со явными координатами положения каждого глифа.
- Если аргумент является
- Текущий объект
Fontзапрашивается для получения контуров указанных глифов. Эти контуры обрабатываются как фигуры в пространстве пользователя относительно положения каждого глифа, определенного на шаге 1. - Контуры символов заполняются, как указано выше в
Shapeоперациях. - Текущий объект
Paintзапрашивается на объектPaintContext, который определяет цвета для отрисовки в пространстве устройства.
- Следующие шаги используются для определения набора глифов, необходимых для отрисовки указанного
-
ImageОперации- Область интереса определяется ограничивающим прямоугольником исходного
Image. Этот ограничивающий прямоугольник задается в пространстве изображения, которое является локальной системой координат объектаImage. - Если
AffineTransformпередается в методdrawImage(Image, AffineTransform, ImageObserver), тоAffineTransformиспользуется для преобразования ограничивающего прямоугольника из пространства изображения в пространство пользователя. ЕслиAffineTransformне предоставлен, ограничивающий прямоугольник рассматривается как уже находящийся в пространстве пользователя. - Ограничивающий прямоугольник исходного
Imageпреобразуется из пространства пользователя в пространство устройства с помощью текущегоTransform. Обратите внимание, что результат преобразования ограничивающего прямоугольника не обязательно приводит к прямоугольной области в пространстве устройства. - Объект
Imageопределяет цвета для отрисовки, с выборкой в соответствии с отображением координат от источника к цели, заданной текущимTransformи необязательным преобразованием изображения.
- Область интереса определяется ограничивающим прямоугольником исходного
Атрибуты отрисовки по умолчанию
Значения по умолчанию для атрибутов отрисовкиGraphics2D следующие: -
Paint - Цвет
Component. -
Font - Цвет
FontComponent. -
Stroke - Квадратная ручка с шириной линии 1, без пунктира, соединением отрезков по методу «фаска» и квадратными наконечниками.
-
Transform - Преобразование
getDefaultTransformдляGraphicsConfigurationComponent. -
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 определяет два метода для управления тем, как цвета применяются к месту назначения.
- Метод
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(AttributedCharacterIterator iterator,
float x,
float y) Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса |
abstract void |
drawString(AttributedCharacterIterator iterator,
int x,
int y) Отображает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса |
abstract void |
drawString(String str,
float x,
float y) Отображает текст, заданный указанным |
abstract void |
drawString(String str,
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) Рисует трехмерный выделенный контур указанного прямоугольника. Края прямоугольника выделены таким образом, что они кажутся скошенными и освещенными из верхнего левого угла.
Цвета, используемые для эффекта выделения, определяются на основе текущего цвета. Получившийся прямоугольник занимает площадь размером 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.
- Возвращает:
- текущую заливку
Graphics2DPaint, которая определяет цвет или узор. - См. также:
-
setPaint(java.awt.Paint),Graphics.setColor(java.awt.Color)
getComposite
public abstract Composite getComposite()
Возвращает текущую операцию наложения в контексте Graphics2D.
- Возвращает:
- текущую операцию наложения
Graphics2DComposite, которая определяет стиль наложения. - См. также:
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()
Возвращает цвет фона, используемый для очистки области.
- Возвращает:
- текущий цвет фона
Graphics2DColor, который определяет цвет фона. - См. также:
setBackground(java.awt.Color)
getStroke
public abstract Stroke getStroke()
Возвращает текущую кисть в контексте Graphics2D.
- Возвращает:
- текущая кисть
Graphics2DStroke, которая определяет стиль линии. - См. также:
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.