Класс 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 точкам на дюйм, например экранов. Для устройств высокого разрешения, например принтеров, масштабирование преобразования по умолчанию устанавливается приблизительно равным 72 единицам пользовательского пространства на квадратный дюйм. Для буферов изображений преобразованием по умолчанию является преобразование Identity.
Процесс отрисовки
Процесс отрисовки можно разделить на четыре этапа, управляемых атрибутами отрисовкиGraphics2D. Средство отрисовки может оптимизировать многие из этих этапов: кэшировать результаты для последующих вызовов, объединять несколько виртуальных этапов в одну операцию или распознавать распространённые простые случаи атрибутов и устранять их, изменяя другие части операции. Этапы процесса отрисовки:
- Определение того, что следует отрисовать.
- Ограничение операции отрисовки текущей областью
Clip. ОбластьClipзадаётся объектомShapeв пользовательском пространстве и управляется программой с помощью различных методов управления отсечением классаGraphicsиGraphics2D. Эта пользовательская область отсечения преобразуется в пространство устройства с помощью текущегоTransformи объединяется с областью отсечения устройства, которая определяется видимостью окон и границами устройства. Объединение пользовательской области отсечения и области отсечения устройства задаёт составную область отсечения, определяющую итоговую область отсечения. Система отрисовки не изменяет пользовательскую область отсечения, чтобы отразить полученную составную область отсечения. - Определение цветов для отрисовки.
- Применение цветов к целевой поверхности рисования с использованием текущего атрибута
Compositeв контекстеGraphics2D.
Три типа операций отрисовки и подробное описание соответствующих процессов отрисовки:
- Операции
Shape- Если операция является операцией
draw(Shape), то для построения нового объектаShape, содержащего контур указанного объектаShape, используется методcreateStrokedShapeтекущего атрибутаStrokeв контекстеGraphics2D. - Объект
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 - Объект
Fontдля объектаComponent. -
Stroke - Квадратное перо шириной 1, без штриховки, с соединениями сегментов типа «стык» и квадратными окончаниями.
-
Transform getDefaultTransformдля объектаGraphicsConfigurationобъектаComponent.-
Composite - Правило
AlphaComposite.SRC_OVER. -
Clip - Отсутствие атрибута отрисовки
Clip; вывод ограничивается объектомComponent.
Проблемы совместимости отрисовки
Модель отрисовки JDK(tm) 1.1 основана на модели дискретизации, согласно которой координаты бесконечно тонкие и расположены между пикселями. Операции рисования выполняются пером шириной в один пиксель, которое заполняет пиксель ниже и справа от опорной точки на траектории. Модель отрисовки JDK 1.1 соответствует возможностям большинства существующих классов платформенных средств отрисовки, которым необходимо преобразовывать целочисленные координаты в дискретное перо, полностью занимающее заданное число пикселей. API Java 2D(tm) (платформа Java(tm) 2) поддерживает средства отрисовки с сглаживанием. Перу шириной в один пиксель необязательно целиком попадать в пиксель 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);
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создает новый объект Graphics2D. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract void |
addRenderingHints |
Задает значения произвольного числа параметров для алгоритмов отрисовки. |
abstract void |
clip |
Пересекает текущую Clip с внутренней областью указанной Shape и задает Clip равным полученному пересечению. |
abstract void |
draw |
Обводит контур Shape с использованием настроек текущего контекста Graphics2D. |
void |
draw3DRect |
Рисует рельефный контур указанного прямоугольника. |
abstract void |
drawGlyphVector |
Отрисовывает текст указанного GlyphVector с использованием атрибутов отрисовки контекста Graphics2D. |
abstract void |
drawImage |
Отрисовывает BufferedImage, обработанное фильтром BufferedImageOp. |
abstract boolean |
drawImage |
Отрисовывает изображение, применяя перед рисованием преобразование из пространства изображения в пользовательское пространство. |
abstract void |
drawRenderableImage |
Отрисовывает RenderableImage, применяя перед рисованием преобразование из пространства изображения в пользовательское пространство. |
abstract void |
drawRenderedImage |
Отрисовывает RenderedImage, применяя перед рисованием преобразование из пространства изображения в пользовательское пространство. |
abstract void |
drawString |
Отрисовывает текст, заданный указанным String, используя текущее состояние текстовых атрибутов в контексте Graphics2D. |
abstract void |
drawString |
Отрисовывает текст указанного String, используя текущее состояние текстовых атрибутов в контексте Graphics2D. |
abstract void |
drawString |
Отрисовывает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса TextAttribute. |
abstract void |
drawString |
Отрисовывает текст указанного итератора, применяя его атрибуты в соответствии со спецификацией класса TextAttribute. |
abstract void |
fill |
Заполняет внутреннюю область Shape с использованием настроек контекста Graphics2D. |
void |
fill3DRect |
Рисует рельефный прямоугольник, заполненный текущим цветом. |
abstract Color |
getBackground() |
Возвращает цвет фона, используемый для очистки области. |
abstract Composite |
getComposite() |
Возвращает текущий Composite в контексте Graphics2D. |
abstract GraphicsConfiguration |
getDeviceConfiguration() |
Возвращает конфигурацию устройства, связанную с этим Graphics2D. |
abstract FontRenderContext |
getFontRenderContext() |
Возвращает контекст отрисовки Font внутри этого контекста Graphics2D. |
abstract Paint |
getPaint() |
Возвращает текущее значение Paint контекста Graphics2D. |
abstract Object |
getRenderingHint |
Возвращает значение одного параметра алгоритмов отрисовки. |
abstract RenderingHints |
getRenderingHints() |
Возвращает параметры алгоритмов отрисовки. |
abstract Stroke |
getStroke() |
Возвращает текущий Stroke в контексте Graphics2D. |
abstract AffineTransform |
getTransform() |
Возвращает копию текущего Transform в контексте Graphics2D. |
abstract boolean |
hit |
Проверяет, пересекается ли указанная Shape с указанным Rectangle, заданным в пространстве устройства. |
abstract void |
rotate |
Объединяет текущее Graphics2D Transform с преобразованием поворота. |
abstract void |
rotate |
Объединяет текущее Graphics2D Transform с преобразованием поворота со смещением. |
abstract void |
scale |
Объединяет текущее Graphics2D Transform с масштабированием. Последующая отрисовка изменяется в соответствии с указанными коэффициентами масштабирования относительно предыдущего масштабирования. |
abstract void |
setBackground |
Задает цвет фона для контекста Graphics2D. |
abstract void |
setComposite |
Задает Composite для контекста Graphics2D. |
abstract void |
setPaint |
Задает атрибут Paint для контекста Graphics2D. |
abstract void |
setRenderingHint |
Задает значение одного параметра алгоритмов отрисовки. |
abstract void |
setRenderingHints |
Заменяет значения всех параметров алгоритмов отрисовки указанным hints. |
abstract void |
setStroke |
Задает Stroke для контекста Graphics2D. |
abstract void |
setTransform |
Перезаписывает преобразование в контексте Graphics2D. |
abstract void |
shear |
Объединяет текущее Graphics2D Transform с преобразованием сдвига. |
abstract void |
transform |
Составляет объект AffineTransform с Transform в этом Graphics2D согласно правилу «последнее заданное применяется первым». |
abstract void |
translate |
Объединяет текущее Graphics2D Transform с преобразованием переноса. |
abstract void |
translate |
Переносит начало координат контекста Graphics2D в точку (x, y) в текущей системе координат. |
Методы, объявленные в классе 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
abstract void |
clearRect |
Очищает указанный прямоугольник, заполняя его цветом фона текущей поверхности рисования. |
abstract void |
clipRect |
Пересекает текущую область отсечения с указанным прямоугольником. |
abstract void |
copyArea |
Копирует область компонента на расстояние, заданное значениями dx и dy. |
abstract Graphics |
create() |
Создает новый объект Graphics, являющийся копией этого объекта Graphics. |
Graphics |
create |
Создает новый объект Graphics на основе этого объекта Graphics, но с новым переносом и областью отсечения. |
abstract void |
dispose() |
Освобождает этот контекст графики и все используемые им системные ресурсы. |
abstract void |
drawArc |
Рисует контур круговой или эллиптической дуги, вписанной в указанный прямоугольник. |
void |
drawBytes |
Рисует текст, заданный указанным байтовым массивом, используя текущие шрифт и цвет этого контекста графики. |
void |
drawChars |
Рисует текст, заданный указанным массивом символов, используя текущие шрифт и цвет этого контекста графики. |
abstract boolean |
drawImage |
Рисует доступную на данный момент часть указанной области изображения, масштабируя ее на лету для размещения в заданной области целевой поверхности рисования. |
abstract boolean |
drawImage |
Рисует доступную на данный момент часть указанной области изображения, масштабируя ее на лету для размещения в заданной области целевой поверхности рисования. |
abstract boolean |
drawImage |
Рисует доступную часть указанного изображения, уже масштабированного для размещения в заданном прямоугольнике. |
abstract boolean |
drawImage |
Рисует доступную часть указанного изображения, уже масштабированного для размещения в заданном прямоугольнике. |
abstract boolean |
drawImage |
Рисует доступную на данный момент часть указанного изображения. |
abstract boolean |
drawImage |
Рисует доступную на данный момент часть указанного изображения. |
abstract void |
drawLine |
Рисует линию текущим цветом между точками (x1, y1) и (x2, y2) в системе координат этого контекста графики. |
abstract void |
drawOval |
Рисует контур овала. |
abstract void |
drawPolygon |
Рисует замкнутый многоугольник, заданный массивами координат x и y. |
void |
drawPolygon |
Рисует контур многоугольника, заданного указанным объектом Polygon. |
abstract void |
drawPolyline |
Рисует последовательность соединенных линий, заданную массивами координат x и y. |
void |
drawRect |
Рисует контур указанного прямоугольника. |
abstract void |
drawRoundRect |
Рисует контур прямоугольника с закругленными углами, используя текущий цвет этого контекста графики. |
abstract void |
fillArc |
Заполняет круговую или эллиптическую дугу, вписанную в указанный прямоугольник. |
abstract void |
fillOval |
Заполняет овал, ограниченный указанным прямоугольником, текущим цветом. |
abstract void |
fillPolygon |
Заполняет замкнутый многоугольник, заданный массивами координат x и y. |
void |
fillPolygon |
Заполняет многоугольник, заданный указанным объектом Polygon, текущим цветом контекста графики. |
abstract void |
fillRect |
Заполняет указанный прямоугольник. |
abstract void |
fillRoundRect |
Заполняет указанный прямоугольник с закругленными углами текущим цветом. |
void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и будет удалена. |
abstract Shape |
getClip() |
Возвращает текущую область отсечения. |
abstract Rectangle |
getClipBounds() |
Возвращает ограничивающий прямоугольник текущей области отсечения. |
Rectangle |
getClipBounds |
Возвращает ограничивающий прямоугольник текущей области отсечения. |
Rectangle |
getClipRect() |
Устарело. Начиная с версии JDK 1.1 заменено на getClipBounds(). |
abstract Color |
getColor() |
Возвращает текущий цвет этого контекста графики. |
abstract Font |
getFont() |
Возвращает текущий шрифт. |
FontMetrics |
getFontMetrics() |
Возвращает метрики текущего шрифта. |
abstract FontMetrics |
getFontMetrics |
Возвращает метрики указанного шрифта. |
boolean |
hitClip |
Возвращает true, если указанная прямоугольная область может пересекаться с текущей областью отсечения. |
abstract void |
setClip |
Задает текущую область отсечения прямоугольником, определенным указанными координатами. |
abstract void |
setClip |
Задает текущую область отсечения произвольной фигурой. |
abstract void |
setColor |
Задает указанный цвет в качестве текущего цвета этого контекста графики. |
abstract void |
setFont |
Задает указанный шрифт для этого контекста графики. |
abstract void |
setPaintMode() |
Задает для этого контекста графики режим рисования, при котором целевая область перезаписывается текущим цветом контекста. |
abstract void |
setXORMode |
Задает для этого контекста графики режим рисования, при котором используются поочередно текущий цвет контекста и новый указанный цвет. |
String |
toString() |
Возвращает объект String, представляющий значение этого объекта Graphics. |
Методы, объявленные в классе Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли этот объект другому объекту. |
final Class |
getClass() |
Возвращает класс времени выполнения этого объекта Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения указанного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения указанного промежутка реального времени. |
Подробное описание конструкторов
Graphics2D
protected Graphics2D()
Graphics2D. Поскольку Graphics2D является абстрактным классом и должен быть настроен подклассами для различных устройств вывода, объекты Graphics2D нельзя создавать напрямую. Вместо этого объекты Graphics2D необходимо получить из другого объекта Graphics2D, созданного с помощью Component, или из изображений, таких как объекты BufferedImage.- См. также:
Подробное описание методов
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— логическое значение, определяющее, будет ли прямоугольник казаться приподнятым над поверхностью или утопленным в нее. - См. также:
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— логическое значение, определяющее, будет ли прямоугольник казаться приподнятым над поверхностью или выдавленным на поверхности. - См. также:
draw
public abstract void draw(Shape s)
Shape с использованием настроек текущего контекста Graphics2D. Применяемые атрибуты рендеринга включают атрибуты Clip, Transform, Paint, Composite и Stroke.- Параметры:
-
s—Shapeдля отображения - См. также:
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еще загружается. - См. также:
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);
- Параметры:
-
img— указанноеBufferedImageдля отображения. Этот метод ничего не делает, еслиimgравно null. -
op— фильтр, применяемый к изображению перед отображением -
x— координата x точки в пользовательском пространстве, где отображается верхний левый угол изображения -
y— координата y точки в пользовательском пространстве, где отображается верхний левый угол изображения - См. также:
drawRenderedImage
public abstract void drawRenderedImage(RenderedImage img, AffineTransform xform)
RenderedImage, применяя перед рисованием преобразование из пространства изображения в пользовательское пространство. Преобразование из пользовательского пространства в пространство устройства выполняется с помощью текущего Transform в Graphics2D. Указанное преобразование применяется к изображению до применения атрибута преобразования в контексте Graphics2D. Применяемые атрибуты рендеринга включают атрибуты Clip, Transform и Composite. Обратите внимание: если указанное преобразование необратимо, рендеринг не выполняется.- Параметры:
-
img— изображение для отображения. Этот метод ничего не делает, еслиimgравно null. -
xform— преобразование из пространства изображения в пользовательское пространство - См. также:
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— преобразование из пространства изображения в пользовательское пространство - См. также:
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
- См. также:
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 - См. также:
drawString
public abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
TextAttribute. Базовая линия первого символа находится в точке (x, y) пользовательского пространства. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево; в этом случае переданная координата указывает положение самого левого символа на базовой линии.
- Определено в:
-
drawStringв классеGraphics - Параметры:
-
iterator— итератор, текст которого нужно отобразить -
x— координата x точки, в которой нужно отобразить текст итератора -
y— координата y точки, в которой нужно отобразить текст итератора - Вызывает исключение:
-
NullPointerException— еслиiteratorравноnull - См. также:
drawString
public abstract void drawString(AttributedCharacterIterator iterator, float x, float y)
TextAttribute. Базовая линия первого символа находится в точке (x, y) пользовательского пространства. Для символов в системах письма, таких как иврит и арабский, глифы могут отображаться справа налево; в этом случае переданная координата указывает положение самого левого символа на базовой линии.
- Параметры:
-
iterator— итератор, текст которого нужно отобразить -
x— координата x точки, в которой нужно отобразить текст итератора -
y— координата y точки, в которой нужно отобразить текст итератора - Вызывает исключение:
-
NullPointerException— еслиiteratorравноnull - См. также:
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. - См. также:
fill
public abstract void fill(Shape s)
Shape с использованием настроек контекста Graphics2D. Применяемые атрибуты рендеринга включают Clip, Transform, Paint и Composite.- Параметры:
-
s—Shapeдля заливки - См. также:
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. - См. также:
getDeviceConfiguration
public abstract GraphicsConfiguration getDeviceConfiguration()
Graphics2D.- Возвращает:
- конфигурацию устройства для этого
Graphics2D.
setComposite
public abstract void setComposite(Composite comp)
Composite для контекста Graphics2D. Composite используется во всех методах рисования, таких как drawImage, drawString, draw и fill. Он определяет, как в процессе рендеринга новые пиксели объединяются с существующими пикселями графического устройства.- Параметры:
-
comp— объектComposite, используемый для рендеринга - См. также:
setPaint
public abstract void setPaint(Paint paint)
Paint для контекста Graphics2D. Вызов этого метода с объектом null Paint не влияет на текущий атрибут Paint этого Graphics2D.- Параметры:
-
paint— объектPaint, используемый для создания цвета в процессе рендеринга, илиnull - См. также:
setStroke
public abstract void setStroke(Stroke s)
Stroke для контекста Graphics2D.- Параметры:
-
s— объектStroke, используемый для обводкиShapeв процессе рендеринга - См. также:
setRenderingHint
public abstract void setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
RenderingHints.- Параметры:
-
hintKey— ключ подсказки, значение которой нужно задать. -
hintValue— значение, задающее предпочтения для указанной категории подсказок. - См. также:
getRenderingHint
public abstract Object getRenderingHint(RenderingHints.Key hintKey)
RenderingHints.- Параметры:
-
hintKey— ключ, соответствующий подсказке, значение которой нужно получить. - Возвращает:
- объект, представляющий значение указанного ключа подсказки. Некоторые ключи и соответствующие им значения определены в классе
RenderingHints. - См. также:
setRenderingHints
public abstract void setRenderingHints(Map<?,?> hints)
hints. Существующие значения всех подсказок рендеринга отбрасываются, а новый набор известных подсказок и значений инициализируется из указанного объекта Map. Категории подсказок включают параметры, управляющие качеством рендеринга и общим компромиссом между временем и качеством в процессе рендеринга. Описание некоторых распространенных ключей и значений приведено в классе RenderingHints.- Параметры:
-
hints— подсказки рендеринга, которые нужно задать - См. также:
addRenderingHints
public abstract void addRenderingHints(Map<?,?> hints)
Map. Все остальные параметры, отсутствующие в указанном объекте, остаются без изменений. Категории параметров включают настройки качества рендеринга и общего компромисса между временем и качеством в процессе рендеринга. Определения некоторых распространённых ключей и значений см. в классе RenderingHints.- Параметры:
-
hints— параметры рендеринга, которые требуется установить - См. также:
getRenderingHints
public abstract RenderingHints getRenderingHints()
RenderingHints.- Возвращает:
- ссылка на экземпляр
RenderingHints, содержащий текущие параметры. - См. также:
translate
public abstract void translate(int x, int y)
Graphics2D в точку (x, y) в текущей системе координат. Изменяет контекст Graphics2D так, чтобы его новое начало соответствовало точке (x, y) в исходной системе координат контекста Graphics2D. Все координаты, используемые в последующих операциях рендеринга в этом графическом контексте, отсчитываются от нового начала координат.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 ]
Поворот на положительный угол тета перемещает точки на положительной полуоси x в направлении положительной полуоси y.- Параметры:
-
theta— угол поворота в радианах
rotate
public abstract void rotate(double theta, double x, double y)
Graphics2D Transform с преобразованием поворота со смещением. К последующему рендерингу применяется преобразование, сформированное переносом в указанную точку, поворотом на заданное значение в радианах и обратным переносом на величину исходного перемещения. Это эквивалентно следующей последовательности вызовов:
translate(x, y);
rotate(theta);
translate(-x, -y);
Поворот на положительный угол тета перемещает точки на положительной полуоси 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
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 - См. также:
getTransform
public abstract AffineTransform getTransform()
Transform в контексте Graphics2D.- Возвращает:
- текущее
AffineTransformв контекстеGraphics2D. - См. также:
getPaint
public abstract Paint getPaint()
Paint контекста Graphics2D.- Возвращает:
- текущий
Graphics2D Paint, задающий цвет или узор. - См. также:
getComposite
public abstract Composite getComposite()
Composite в контексте Graphics2D.- Возвращает:
- текущий
Graphics2D Composite, задающий способ композиции. - См. также:
setBackground
public abstract void setBackground(Color color)
Graphics2D. Цвет фона используется для очистки области. При создании Graphics2D для Component цвет фона наследуется от Component. Установка цвета фона в контексте Graphics2D влияет только на последующие вызовы clearRect, но не на цвет фона Component. Чтобы изменить фон Component, используйте соответствующие методы Component.- Параметры:
-
color— цвет фона, используемый в последующих вызовахclearRect - См. также:
getBackground
public abstract Color getBackground()
- Возвращает:
- текущий
Graphics2D Color, задающий цвет фона. - См. также:
getStroke
public abstract Stroke getStroke()
Stroke в контексте Graphics2D.- Возвращает:
- текущий
Graphics2D Stroke, задающий стиль линии. - См. также:
clip
public abstract void clip(Shape s)
Clip с внутренней областью указанной Shape и задаёт Clip как полученное пересечение. Перед пересечением указанная Shape преобразуется с помощью текущего Graphics2D Transform относительно текущей Clip. Этот метод используется для уменьшения текущей Clip. Чтобы увеличить Clip, используйте setClip. Пользовательская область отсечения, изменяемая этим методом, не зависит от отсечения, связанного с границами устройства и видимостью. Если область отсечения ранее не задавалась или была очищена с помощью setClip с аргументом null, указанная Shape становится новой пользовательской областью отсечения.
Поскольку этот метод пересекает указанную фигуру с текущей областью отсечения, для фигуры null будет выброшено исключение NullPointerException, если пользовательская область отсечения также не является null. Поэтому не рекомендуется вызывать этот метод с аргументом null.
- Параметры:
-
s—Shape, которую требуется пересечь с текущейClip. Этот метод обновляет текущуюClip. - Выбрасывает:
-
NullPointerException— еслиsимеет значениеnullи пользовательская область отсечения задана.
getFontRenderContext
public abstract FontRenderContext getFontRenderContext()
Font в контексте Graphics2D. FontRenderContext содержит параметры приложения, такие как сглаживание и дробные метрики, а также сведения о целевом устройстве, например количество точек на дюйм. Эти сведения следует предоставлять приложению при использовании объектов, выполняющих типографское форматирование, таких как Font и TextLayout. Эти сведения также следует предоставлять приложениям, выполняющим собственную компоновку и нуждающимся в точных измерениях различных характеристик глифов, таких как ширина продвижения и высота строки, при применении различных параметров рендеринга текста.- Возвращает:
- ссылку на экземпляр FontRenderContext.
- С версии:
- 1.2
- См. также:
© 1993, 2025, 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.