Класс RenderingHints
- Все реализуемые интерфейсы:
Cloneable, Map<Object,Object>
public class RenderingHints extends Object implements Map<Object,Object>, Cloneable
RenderingHints определяет и управляет коллекциями ключей и связанных с ними значений, которые позволяют приложению влиять на выбор алгоритмов, используемых другими классами для отрисовки и обработки изображений. Класс Graphics2D, а также классы, реализующие BufferedImageOp и RasterOp, предоставляют методы для получения и, возможно, установки отдельных ключей RenderingHints или их групп и соответствующих значений. Выполняя операции отрисовки или обработки изображений, эти реализации должны проверять значения всех RenderingHints, запрошенных вызывающим кодом, и по мере своих возможностей подбирать соответствующие алгоритмы. Обратите внимание, что поскольку эти ключи и значения являются подсказками, реализация не обязана поддерживать все возможные варианты, перечисленные ниже, или реагировать на запросы изменить выбранный алгоритм. Значения различных ключей подсказок также могут взаимодействовать: хотя в одной ситуации поддерживаются все варианты для определённого ключа, при изменении значений, связанных с другими ключами, реализация может быть более ограничена. Например, некоторые реализации могут поддерживать несколько типов дизеринга, когда подсказка сглаживания отключена, но иметь мало возможностей управлять дизерингом при включённом сглаживании. Полный набор поддерживаемых ключей и подсказок также может зависеть от назначения, поскольку во время выполнения могут использоваться разные базовые модули для отрисовки на экране, в объектах BufferedImage или при печати.
Реализации могут полностью игнорировать подсказки, однако им следует стараться использовать алгоритм, максимально соответствующий запросу. Если реализация поддерживает определённый алгоритм при любом значении связанного с ним ключа подсказки, то как минимум она должна поддерживать его, когда значение этого ключа точно указывает на данный алгоритм.
Ключи, используемые для управления подсказками, — это специальные значения, являющиеся подклассами соответствующего класса RenderingHints.Key. Многие распространённые подсказки представлены ниже в виде статических констант этого класса, однако этот список не является исчерпывающим. Другие пакеты могут создавать дополнительные подсказки, определяя новые объекты — подклассы класса Key — и задавая соответствующие значения.
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
RenderingHints.Key |
Определяет базовый тип всех ключей, используемых вместе с классом RenderingHints для управления различными вариантами выбора алгоритмов в конвейерах отрисовки и обработки изображений. |
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final RenderingHints.Key |
KEY_ALPHA_INTERPOLATION |
Ключ подсказки интерполяции альфа-канала. |
static final RenderingHints.Key |
KEY_ANTIALIASING |
Ключ подсказки сглаживания. |
static final RenderingHints.Key |
KEY_COLOR_RENDERING |
Ключ подсказки цветопередачи. |
static final RenderingHints.Key |
KEY_DITHERING |
Ключ подсказки дизеринга. |
static final RenderingHints.Key |
KEY_FRACTIONALMETRICS |
Ключ подсказки дробных метрик шрифта. |
static final RenderingHints.Key |
KEY_INTERPOLATION |
Ключ подсказки интерполяции. |
static final RenderingHints.Key |
KEY_RENDERING |
Ключ подсказки отрисовки. |
static final RenderingHints.Key |
KEY_RESOLUTION_VARIANT |
Ключ подсказки варианта разрешения изображения. |
static final RenderingHints.Key |
KEY_STROKE_CONTROL |
Ключ подсказки управления нормализацией штрихов. |
static final RenderingHints.Key |
KEY_TEXT_ANTIALIASING |
Ключ подсказки сглаживания текста. |
static final RenderingHints.Key |
KEY_TEXT_LCD_CONTRAST |
Ключ подсказки контрастности текста при отрисовке на ЖК-дисплее. |
static final Object |
VALUE_ALPHA_INTERPOLATION_DEFAULT |
Значение подсказки интерполяции альфа-канала — алгоритмы смешивания альфа-каналов выбираются реализацией с учётом компромисса между производительностью и качеством. |
static final Object |
VALUE_ALPHA_INTERPOLATION_QUALITY |
Значение подсказки интерполяции альфа-канала — алгоритмы смешивания альфа-каналов выбираются с приоритетом точности и визуального качества. |
static final Object |
VALUE_ALPHA_INTERPOLATION_SPEED |
Значение подсказки интерполяции альфа-канала — алгоритмы смешивания альфа-каналов выбираются с приоритетом скорости вычислений. |
static final Object |
VALUE_ANTIALIAS_DEFAULT |
Значение подсказки сглаживания — отрисовка выполняется с режимом сглаживания по умолчанию, выбранным реализацией. |
static final Object |
VALUE_ANTIALIAS_OFF |
Значение подсказки сглаживания — отрисовка выполняется без сглаживания. |
static final Object |
VALUE_ANTIALIAS_ON |
Значение подсказки сглаживания — отрисовка выполняется со сглаживанием. |
static final Object |
VALUE_COLOR_RENDER_DEFAULT |
Значение подсказки цветопередачи — вычисления преобразования цветов выполняются выбранным реализацией способом, обеспечивающим наилучший компромисс между производительностью и точностью. |
static final Object |
VALUE_COLOR_RENDER_QUALITY |
Значение подсказки цветопередачи — вычисления преобразования цветов выполняются с максимальной точностью и визуальным качеством. |
static final Object |
VALUE_COLOR_RENDER_SPEED |
Значение подсказки цветопередачи — выполняется максимально быстрое преобразование цветов в формат устройства вывода. |
static final Object |
VALUE_DITHER_DEFAULT |
Значение подсказки дизеринга — используется выбранный реализацией режим дизеринга по умолчанию. |
static final Object |
VALUE_DITHER_DISABLE |
Значение подсказки дизеринга — при отрисовке геометрических объектов дизеринг не применяется. |
static final Object |
VALUE_DITHER_ENABLE |
Значение подсказки дизеринга — при отрисовке геометрических объектов дизеринг применяется при необходимости. |
static final Object |
VALUE_FRACTIONALMETRICS_DEFAULT |
Значение подсказки дробных метрик шрифта — позиции глифов символов определяются с точностью, выбранной реализацией. |
static final Object |
VALUE_FRACTIONALMETRICS_OFF |
Значение подсказки дробных метрик шрифта — позиции глифов символов определяются с округлением ширины продвижения до границ пикселей. |
static final Object |
VALUE_FRACTIONALMETRICS_ON |
Значение подсказки дробных метрик шрифта — позиции глифов символов определяются с точностью до субпикселя. |
static final Object |
VALUE_INTERPOLATION_BICUBIC |
Значение подсказки интерполяции — цветовые отсчёты 9 ближайших отсчётов изображения с целочисленными координатами интерполируются с помощью кубической функции как по X, так и по Y для получения цветового отсчёта. |
static final Object |
VALUE_INTERPOLATION_BILINEAR |
Значение подсказки интерполяции — цветовые отсчёты 4 ближайших соседних отсчётов изображения с целочисленными координатами линейно интерполируются для получения цветового отсчёта. |
static final Object |
VALUE_INTERPOLATION_NEAREST_NEIGHBOR |
Значение подсказки интерполяции — используется цветовой отсчёт ближайшего соседнего отсчёта изображения с целочисленными координатами. |
static final Object |
VALUE_RENDER_DEFAULT |
Значение подсказки отрисовки — алгоритмы отрисовки выбираются реализацией с учётом компромисса между производительностью и качеством. |
static final Object |
VALUE_RENDER_QUALITY |
Значение подсказки отрисовки — алгоритмы отрисовки выбираются с приоритетом качества результата. |
static final Object |
VALUE_RENDER_SPEED |
Значение подсказки отрисовки — алгоритмы отрисовки выбираются с приоритетом скорости. |
static final Object |
VALUE_RESOLUTION_VARIANT_BASE |
Значение подсказки варианта разрешения изображения — всегда используется стандартное разрешение изображения. |
static final Object |
VALUE_RESOLUTION_VARIANT_DEFAULT |
Значение подсказки варианта разрешения изображения — вариант разрешения изображения выбирается на основе эвристики по умолчанию, которая может зависеть от политик платформы |
static final Object |
VALUE_RESOLUTION_VARIANT_DPI_FIT |
Значение подсказки варианта разрешения изображения — вариант разрешения изображения выбирается только на основе DPI экрана. |
static final Object |
VALUE_RESOLUTION_VARIANT_SIZE_FIT |
Значение подсказки варианта разрешения изображения — вариант разрешения изображения выбирается на основе DPI экрана и преобразования в контексте Graphics2D. |
static final Object |
VALUE_STROKE_DEFAULT |
Значение подсказки управления нормализацией штрихов — геометрия может изменяться или оставаться неизменной в зависимости от компромиссов, выбранных конкретной реализацией. |
static final Object |
VALUE_STROKE_NORMALIZE |
Значение подсказки управления нормализацией штрихов — геометрию следует нормализовать для повышения равномерности или интервалов между линиями и улучшения общей эстетики. |
static final Object |
VALUE_STROKE_PURE |
Значение подсказки управления нормализацией штрихов — геометрию следует оставить без изменений и отрисовать с точностью до субпикселя. |
static final Object |
VALUE_TEXT_ANTIALIAS_DEFAULT |
Значение подсказки сглаживания текста — отрисовка текста выполняется в соответствии с подсказкой KEY_ANTIALIASING или режимом по умолчанию, выбранным реализацией. |
static final Object |
VALUE_TEXT_ANTIALIAS_GASP |
Значение подсказки сглаживания текста — при отрисовке текста предлагается использовать сведения из ресурса шрифта, указывающие для каждого размера в пунктах, применять ли VALUE_TEXT_ANTIALIAS_ON или VALUE_TEXT_ANTIALIAS_OFF. |
static final Object |
VALUE_TEXT_ANTIALIAS_LCD_HBGR |
Значение подсказки сглаживания текста — предлагается отображать текст с оптимизацией для ЖК-дисплея, у которого субпиксели расположены слева направо в порядке B,G,R, так что горизонтальное разрешение субпикселей втрое превышает горизонтальное разрешение полного пикселя (HBGR). |
static final Object |
VALUE_TEXT_ANTIALIAS_LCD_HRGB |
Значение подсказки сглаживания текста — предлагается отображать текст с оптимизацией для ЖК-дисплея, у которого субпиксели расположены слева направо в порядке R,G,B, так что горизонтальное разрешение субпикселей втрое превышает горизонтальное разрешение полного пикселя (HRGB). |
static final Object |
VALUE_TEXT_ANTIALIAS_LCD_VBGR |
Значение подсказки сглаживания текста — предлагается отображать текст с оптимизацией для ЖК-дисплея, у которого субпиксели расположены сверху вниз в порядке B,G,R, так что вертикальное разрешение субпикселей втрое превышает вертикальное разрешение полного пикселя (VBGR). |
static final Object |
VALUE_TEXT_ANTIALIAS_LCD_VRGB |
Значение подсказки сглаживания текста — предлагается отображать текст с оптимизацией для ЖК-дисплея, у которого субпиксели расположены сверху вниз в порядке R,G,B, так что вертикальное разрешение субпикселей втрое превышает вертикальное разрешение полного пикселя (VRGB). |
static final Object |
VALUE_TEXT_ANTIALIAS_OFF |
Значение подсказки сглаживания текста — отрисовка текста выполняется без сглаживания любого типа. |
static final Object |
VALUE_TEXT_ANTIALIAS_ON |
Значение подсказки сглаживания текста — при отрисовке текста применяется сглаживание того или иного типа. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RenderingHints |
Создаёт новый объект с указанной парой ключ/значение. |
RenderingHints |
Создаёт новый объект с ключами и значениями, скопированными из указанного объекта Map, который может быть равен null. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
add |
Добавляет все ключи и соответствующие значения из указанного объекта RenderingHints в этот объект RenderingHints. |
void |
clear() |
Удаляет все пары ключ/значение из этого объекта RenderingHints. |
Object |
clone() |
Создаёт копию этого объекта RenderingHints с тем же содержимым, что и у этого объекта RenderingHints. |
boolean |
containsKey |
Возвращает true, если этот объект RenderingHints содержит сопоставление для указанного ключа. |
boolean |
containsValue |
Возвращает true, если этот объект RenderingHints сопоставляет один или несколько ключей с указанным значением. |
Set |
entrySet() |
Возвращает представление Set сопоставлений, содержащихся в этом объекте RenderingHints. |
boolean |
equals |
Сравнивает указанный объект Object с этим объектом RenderingHints на равенство. |
Object |
get |
Возвращает значение, сопоставленное указанному ключу. |
int |
hashCode() |
Возвращает значение хеш-кода этого объекта RenderingHints. |
boolean |
isEmpty() |
Возвращает true, если этот объект RenderingHints не содержит сопоставлений ключей и значений. |
Set |
keySet() |
Возвращает представление Set ключей, содержащихся в этом объекте RenderingHints. |
Object |
put |
Сопоставляет указанный объект key указанному объекту value в этом объекте RenderingHints. |
void |
putAll |
Копирует все сопоставления из указанного объекта Map в этот объект RenderingHints. |
Object |
remove |
Удаляет ключ и соответствующее ему значение из этого объекта RenderingHints. |
int |
size() |
Возвращает количество сопоставлений ключей и значений в этом объекте RenderingHints. |
String |
toString() |
Возвращает довольно длинное строковое представление хеш-таблицы, содержащей сопоставления ключей со значениями для этого объекта RenderingHints. |
Collection |
values() |
Возвращает представление Collection значений, содержащихся в этом объекте RenderingHints. |
Методы, объявленные в интерфейсе Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
Подробное описание полей
KEY_ANTIALIASING
public static final RenderingHints.Key KEY_ANTIALIASING
ANTIALIASING управляет тем, будут ли методы отрисовки геометрии объекта Graphics2D пытаться уменьшить артефакты алиасинга по краям фигур. Типичный алгоритм сглаживания смешивает исходные цвета пикселей вдоль границы фигуры с запрошенной заливкой в соответствии с оценочной частичной площадью покрытия пикселя фигурой.
Допустимые значения этой подсказки:
VALUE_ANTIALIAS_ON
public static final Object VALUE_ANTIALIAS_ON
- См. также:
VALUE_ANTIALIAS_OFF
public static final Object VALUE_ANTIALIAS_OFF
- См. также:
VALUE_ANTIALIAS_DEFAULT
public static final Object VALUE_ANTIALIAS_DEFAULT
- См. также:
KEY_RENDERING
public static final RenderingHints.Key KEY_RENDERING
RENDERING — это общая рекомендация высокого уровня, которая указывает, следует ли при выборе алгоритмов отдавать предпочтение скорости или качеству с учётом компромиссов. Эта подсказка может учитываться при любой операции отрисовки или обработки изображений, однако обычно при выборе отдают предпочтение другим, более конкретным подсказкам. Допустимые значения этой подсказки:
VALUE_RENDER_SPEED
public static final Object VALUE_RENDER_SPEED
- См. также:
VALUE_RENDER_QUALITY
public static final Object VALUE_RENDER_QUALITY
- См. также:
VALUE_RENDER_DEFAULT
public static final Object VALUE_RENDER_DEFAULT
- См. также:
KEY_DITHERING
public static final RenderingHints.Key KEY_DITHERING
DITHERING управляет точностью аппроксимации цвета при сохранении в целевом формате с ограниченным разрешением цвета. Некоторые устройства вывода поддерживают ограниченное число цветов, которых может быть недостаточно для точного представления полного спектра цветов, возникающих при отрисовке. Для такого устройства подсказка DITHERING управляет тем, будет ли отрисовка выполняться сплошной заливкой одним значением пикселя — ближайшим из поддерживаемых цветов к запрошенному, — или фигуры будут заполняться узором из цветов, которые в сочетании лучше аппроксимируют этот цвет.
Допустимые значения этой подсказки:
VALUE_DITHER_DISABLE
public static final Object VALUE_DITHER_DISABLE
- См. также:
VALUE_DITHER_ENABLE
public static final Object VALUE_DITHER_ENABLE
- См. также:
VALUE_DITHER_DEFAULT
public static final Object VALUE_DITHER_DEFAULT
- См. также:
KEY_TEXT_ANTIALIASING
public static final RenderingHints.Key KEY_TEXT_ANTIALIASING
TEXT_ANTIALIASING может управлять применением алгоритмов сглаживания текста независимо от выбранного способа отрисовки фигур. Часто приложению требуется сглаживать только текст, но не другие фигуры. Кроме того, алгоритмы уменьшения артефактов алиасинга текста часто сложнее алгоритмов общей отрисовки, поэтому этот ключ подсказки предоставляет дополнительные значения, управляющие выбором некоторых алгоритмов, предназначенных специально для текста. Если оставить подсказку в состоянии DEFAULT, она обычно будет учитывать значение стандартного ключа подсказки KEY_ANTIALIASING. Допустимые значения этой подсказки:
VALUE_TEXT_ANTIALIAS_ON
public static final Object VALUE_TEXT_ANTIALIAS_ON
- См. также:
VALUE_TEXT_ANTIALIAS_OFF
public static final Object VALUE_TEXT_ANTIALIAS_OFF
- См. также:
VALUE_TEXT_ANTIALIAS_DEFAULT
public static final Object VALUE_TEXT_ANTIALIAS_DEFAULT
KEY_ANTIALIASING или с параметрами по умолчанию, выбранными реализацией.- См. также:
VALUE_TEXT_ANTIALIAS_GASP
public static final Object VALUE_TEXT_ANTIALIAS_GASP
VALUE_TEXT_ANTIALIAS_ON или VALUE_TEXT_ANTIALIAS_OFF. Шрифты TrueType обычно содержат эту информацию в таблице «gasp». Если такой информации нет, поведение для конкретного шрифта и размера определяется настройками реализации по умолчанию.
Примечание:Дизайнер шрифта обычно тщательно настраивает шрифт для наиболее распространённых размеров пользовательского интерфейса. Поэтому в таблице «gasp», скорее всего, указано использовать только хинтинг для этих размеров, а не «сглаживание». Следовательно, во многих случаях получаемое отображение текста эквивалентно VALUE_TEXT_ANTIALIAS_OFF. Это может показаться неожиданным, но такое поведение корректно.
Для обеспечения единообразия логические шрифты, состоящие из нескольких физических шрифтов, будут использовать настройку, наиболее подходящую для всего составного шрифта.
- Начиная с версии:
- 1.6
- См. также:
VALUE_TEXT_ANTIALIAS_LCD_HRGB
public static final Object VALUE_TEXT_ANTIALIAS_LCD_HRGB
Примечания:
При выборе применения значений подсказок для текста на ЖК-дисплеях реализация может учитывать такие факторы, как необходимость глубины цвета целевого устройства не менее 15 бит на пиксель (то есть 5 бит на компонент цвета), характеристики шрифта (например, могут ли встроенные растровые изображения обеспечить лучший результат), а также отображение на удалённом сетевом устройстве — в этом случае подсказка может применяться только при наличии подходящих протоколов. Реализация может игнорировать подсказку при отрисовке со сверхвысоким разрешением или если целевое устройство не подходит, например при печати.
Эти подсказки можно применять и при отрисовке в программные изображения, однако такие изображения могут оказаться неподходящими для общего экспорта, поскольку текст будет отрисован с учётом конкретного расположения субпикселей. Кроме того, не следует использовать изображения со сжатием с потерями или форматы изображений с ограниченной палитрой, например GIF. Поэтому, если изображение не предназначено исключительно для отображения на устройстве с такой же конфигурацией, лучше выбрать другую подсказку сглаживания текста, например VALUE_TEXT_ANTIALIAS_ON.
Выбор значения, не соответствующего используемому ЖК-дисплею, скорее всего, приведёт к ухудшению качества текста. На устройствах отображения (например, ЭЛТ), характеристики которых отличаются от характеристик ЖК-дисплеев, общий эффект может быть похож на стандартное сглаживание текста, но качество может ухудшиться из-за искажения цветов. ЖК-дисплеи с аналоговым подключением также могут иметь лишь небольшое преимущество перед стандартным сглаживанием текста и вести себя подобно ЭЛТ.
Иными словами, для получения наилучших результатов используйте ЖК-дисплей с цифровым разъёмом и указывайте соответствующую конфигурацию субпикселей.
- Начиная с версии:
- 1.6
- См. также:
VALUE_TEXT_ANTIALIAS_LCD_HBGR
public static final Object VALUE_TEXT_ANTIALIAS_LCD_HBGR
VALUE_TEXT_ANTIALIAS_LCD_HRGB.- Начиная с версии:
- 1.6
- См. также:
VALUE_TEXT_ANTIALIAS_LCD_VRGB
public static final Object VALUE_TEXT_ANTIALIAS_LCD_VRGB
VALUE_TEXT_ANTIALIAS_LCD_HRGB.- Начиная с версии:
- 1.6
- См. также:
VALUE_TEXT_ANTIALIAS_LCD_VBGR
public static final Object VALUE_TEXT_ANTIALIAS_LCD_VBGR
VALUE_TEXT_ANTIALIAS_LCD_HRGB.- Начиная с версии:
- 1.6
- См. также:
KEY_TEXT_LCD_CONTRAST
public static final RenderingHints.Key KEY_TEXT_LCD_CONTRAST
Integer, который используется для корректировки контрастности текста вместе с подсказкой сглаживания текста на ЖК-дисплее, например VALUE_TEXT_ANTIALIAS_LCD_HRGB. - Значения должны быть положительными целыми числами в диапазоне от 100 до 250.
- Меньшее значение (например, 100) соответствует более контрастному тексту при отображении тёмного текста на светлом фоне.
- Большее значение (например, 200) соответствует менее контрастному тексту при отображении тёмного текста на светлом фоне.
- Обычно полезны значения в узком диапазоне 140–180.
- Если значение не задано, применяется системное значение или значение реализации по умолчанию.
- Начиная с версии:
- 1.6
- См. также:
KEY_FRACTIONALMETRICS
public static final RenderingHints.Key KEY_FRACTIONALMETRICS
FRACTIONALMETRICS управляет тем, учитывается ли при позиционировании отдельных глифов символов субпиксельная точность масштабированных интервалов продвижения символов в шрифте или же такие векторы продвижения округляются до целого числа пикселей устройства. Эта подсказка лишь рекомендует точность позиционирования глифов и не указывает и не рекомендует, следует ли изменять фактическую растеризацию или пиксельные границы глифа для приведения их в соответствие с этой точностью. При отрисовке текста на устройстве с низким разрешением, например на экране, неизбежны многочисленные операции округления: высококачественное и очень точное описание формы и метрик глифов символов необходимо согласовать с дискретными пикселями устройства. В идеале позиционирование глифов при компоновке текста рассчитывалось бы путём масштабирования проектных метрик шрифта в соответствии с размером в пунктах, но тогда масштабированная ширина продвижения не обязательно была бы целым числом пикселей. Если позиционировать глифы с субпиксельной точностью на основе этих масштабированных проектных метрик, растеризацию в идеале пришлось бы корректировать для каждого возможного субпиксельного начала координат.
К сожалению, индивидуальное масштабирование каждого глифа с учётом его точного субпиксельного начала координат при компоновке текста было бы чрезмерно затратным, поэтому для компоновки текста обычно используется упрощённая система, основанная на целочисленных координатах устройства. Растеризация глифа и масштабированная ширина продвижения корректируются вместе, чтобы текст хорошо выглядел при разрешении устройства, а расстояния между глифами в целых пикселях были единообразными и способствовали равномерному размещению и хорошей читаемости глифов.
Округление ширины продвижения растеризованных глифов до целых расстояний означает, что плотность символов и общая длина текстовой строки отличаются от теоретических проектных значений из-за накопления небольших различий в скорректированной ширине каждого глифа. Конкретные различия для каждого глифа неодинаковы: одни глифы шире, другие уже своих теоретических проектных значений. Поэтому общее отклонение плотности символов и длины зависит от нескольких факторов, включая шрифт, целевое разрешение устройства и выбранные для отображения строки глифы. В результате отрисовка одной и той же строки при разных разрешениях устройств может давать сильно различающиеся метрики всей строки.
Если включён параметр FRACTIONALMETRICS, для компоновки с субпиксельной точностью используются истинные проектные метрики шрифта, масштабированные в соответствии с размером в пунктах. Поэтому средняя плотность глифов и общая длина длинной строки символов будут точнее соответствовать теоретическому проекту шрифта, однако читаемость может ухудшиться, поскольку расстояния между отдельными парами символов не всегда будут одинаковыми: это зависит от того, как накопление субпиксельных координат начала глифов соотносится с сеткой пикселей устройства. Включение этой подсказки может быть полезно, если необходимо обеспечить согласованность компоновки текста на широком диапазоне разрешений вывода. В частности, эта подсказка может быть полезна, когда компоновка текста предварительно просматривается на устройстве с низким разрешением, например на экране, а затем выводится на принтер или наборное устройство с высоким разрешением.
Если подсказка отключена, масштабированные проектные метрики округляются или корректируются до целых расстояний для компоновки. Расстояния между конкретными парами глифов на устройстве будут более равномерными, но плотность и общая длина длинных строк могут перестать соответствовать замыслу разработчика шрифта. Отключение этой подсказки обычно обеспечивает лучшую читаемость на устройствах с низким разрешением, например на компьютерных мониторах.
Допустимые значения этого ключа:
VALUE_FRACTIONALMETRICS_OFF
public static final Object VALUE_FRACTIONALMETRICS_OFF
- См. также:
VALUE_FRACTIONALMETRICS_ON
public static final Object VALUE_FRACTIONALMETRICS_ON
- См. также:
VALUE_FRACTIONALMETRICS_DEFAULT
public static final Object VALUE_FRACTIONALMETRICS_DEFAULT
- См. также:
KEY_INTERPOLATION
public static final RenderingHints.Key KEY_INTERPOLATION
INTERPOLATION управляет фильтрацией или передискретизацией пикселей изображения при отрисовке изображения. Неявно считается, что изображения содержат образцы цветов в точках с целочисленными координатами. При отображении изображений без поворота и масштабирования на целевом устройстве очевидно, какие пиксели изображения соответствуют пикселям устройства: образцы в точках с целочисленными координатами изображения один к одному передаются пикселям в соответствующих целочисленных точках сетки пикселей устройства. Если изображения отображаются в масштабированной, повёрнутой или иным образом преобразованной системе координат, отображение координат пикселей устройства обратно на изображение ставит вопрос о том, какой образец цвета использовать для непрерывных координат, лежащих между целочисленными точками заданных образцов изображения. Алгоритмы интерполяции задают функции, которые вычисляют образец цвета для любой непрерывной координаты изображения на основе образцов цветов в соседних целочисленных точках.
Допустимые значения этой подсказки:
VALUE_INTERPOLATION_NEAREST_NEIGHBOR
public static final Object VALUE_INTERPOLATION_NEAREST_NEIGHBOR
При увеличении изображения оно будет выглядеть соответственно более блочным. При уменьшении изображения цвета исходных пикселей либо используются без изменений, либо полностью пропускаются в результирующем представлении.
- См. также:
VALUE_INTERPOLATION_BILINEAR
public static final Object VALUE_INTERPOLATION_BILINEAR
При увеличении изображения между цветами не возникает резких блочных границ, как при использовании метода NEAREST_NEIGHBOR, однако в смешении цветов могут появляться едва заметные разрывы вдоль горизонтальных и вертикальных границ, проходящих через образцы. Это вызвано резким изменением наклона интерполяции при переходе с одной стороны образца на другую. При уменьшении изображения в результирующем изображении сохраняется информация о цвете большего числа пикселей, поскольку каждый выходной пиксель получает цветовую информацию максимум от четырёх пикселей изображения.
- См. также:
VALUE_INTERPOLATION_BICUBIC
public static final Object VALUE_INTERPOLATION_BICUBIC
X и Y для получения образца цвета. Концептуально изображение рассматривается почти так же, как в алгоритме BILINEAR, однако цветовые переходы между образцами являются кривыми и обеспечивают лучшую непрерывность наклона при пересечении границ между образцами. При увеличении изображения блочных границ не возникает, а интерполяция должна выглядеть более плавной и точнее передавать границы исходного изображения, чем BILINEAR. При уменьшении изображения в результирующем представлении сохраняется информация о цвете ещё большего числа исходных образцов.
- См. также:
KEY_ALPHA_INTERPOLATION
public static final RenderingHints.Key KEY_ALPHA_INTERPOLATION
ALPHA_INTERPOLATION — это общая рекомендация высокого уровня, указывающая, следует ли при выборе алгоритмов альфа-смешивания отдавать предпочтение скорости или качеству с учётом компромиссов. Эта подсказка может управлять выбором вычислений альфа-смешивания, в которых ради скорости используются таблицы поиска или инструкции SIMD с меньшей точностью, что приводит к некоторой потере точности. Подсказка также может управлять преобразованием значений цвета и альфа-канала в линейное цветовое пространство во время вычислений, что обеспечивает более линейный визуальный эффект ценой дополнительных вычислений для каждого пикселя.
Допустимые значения этой подсказки:
VALUE_ALPHA_INTERPOLATION_SPEED
public static final Object VALUE_ALPHA_INTERPOLATION_SPEED
- См. также:
VALUE_ALPHA_INTERPOLATION_QUALITY
public static final Object VALUE_ALPHA_INTERPOLATION_QUALITY
- См. также:
VALUE_ALPHA_INTERPOLATION_DEFAULT
public static final Object VALUE_ALPHA_INTERPOLATION_DEFAULT
- См. также:
KEY_COLOR_RENDERING
public static final RenderingHints.Key KEY_COLOR_RENDERING
COLOR_RENDERING управляет точностью аппроксимации и преобразования при сохранении цветов в целевое изображение или поверхность. Когда операция рендеринга или обработки изображения создает значение цвета, которое необходимо сохранить в целевом объекте, это значение сначала нужно преобразовать в форму, подходящую для сохранения в целевом изображении или на целевой поверхности. Как минимум, компоненты цвета необходимо преобразовать в битовые представления и расположить в правильном порядке либо выбрать индекс в таблице подстановки цветов, прежде чем данные можно будет сохранить в целевой памяти. Без этого минимального преобразования данные в целевом объекте, скорее всего, будут представлять случайные, неверные или, возможно, даже неподдерживаемые значения. Хорошо известны алгоритмы быстрого преобразования результатов операций рендеринга в цветовой формат наиболее распространенных целевых объектов; они достаточно оптимальны для выполнения.
Простое выполнение самого базового преобразования цветового формата для сохранения цветов в целевом объекте может не учитывать различия в калибровке ColorSpace источника и целевого объекта или другие факторы, например линейность гамма-коррекции. Если ColorSpace источника и целевого объекта не совпадают, для корректного выполнения операции рендеринга с максимальной точностью представления цветов исходные цвета следует преобразовать в независимое от устройства ColorSpace, а затем преобразовать результаты обратно в ColorSpace целевого объекта. Кроме того, если во время операции рендеринга выполняются такие вычисления, как смешение нескольких исходных цветов, большей визуальной четкости можно добиться, выбрав промежуточное независимое от устройства ColorSpace с линейной зависимостью между вычисляемыми значениями и восприятием человеческим глазом характеристик отклика выходного устройства.
Допустимые значения этой подсказки:
VALUE_COLOR_RENDER_SPEED
public static final Object VALUE_COLOR_RENDER_SPEED
- См. также:
VALUE_COLOR_RENDER_QUALITY
public static final Object VALUE_COLOR_RENDER_QUALITY
- См. также:
VALUE_COLOR_RENDER_DEFAULT
public static final Object VALUE_COLOR_RENDER_DEFAULT
- См. также:
KEY_STROKE_CONTROL
public static final RenderingHints.Key KEY_STROKE_CONTROL
STROKE_CONTROL определяет, должна ли или может ли реализация рендеринга изменять геометрию отображаемых фигур для различных целей. Некоторые реализации могут использовать оптимизированную библиотеку платформы для рендеринга, которая на данной платформе работает быстрее традиционных программных алгоритмов рендеринга, но при этом может не поддерживать координаты с плавающей точкой. Некоторые реализации также могут использовать сложные алгоритмы, которые изменяют координаты контура, чтобы широкие линии выглядели более равномерными по ширине и интервалам.
Если реализация выполняет какое-либо изменение или «нормализацию» контура, координаты никогда не должны смещаться более чем на половину пикселя в любом направлении.
Допустимые значения этой подсказки:
- Начиная с версии:
- 1.3
VALUE_STROKE_DEFAULT
public static final Object VALUE_STROKE_DEFAULT
- Начиная с версии:
- 1.3
- См. также:
VALUE_STROKE_NORMALIZE
public static final Object VALUE_STROKE_NORMALIZE
- Начиная с версии:
- 1.3
- См. также:
VALUE_STROKE_PURE
public static final Object VALUE_STROKE_PURE
- Начиная с версии:
- 1.3
- См. также:
KEY_RESOLUTION_VARIANT
public static final RenderingHints.Key KEY_RESOLUTION_VARIANT
RESOLUTION_VARIANT определяет, какой вариант разрешения изображения следует выбрать для его рисования.
- Начиная с версии:
- 9
VALUE_RESOLUTION_VARIANT_DEFAULT
public static final Object VALUE_RESOLUTION_VARIANT_DEFAULT
- Начиная с версии:
- 9
- См. также:
VALUE_RESOLUTION_VARIANT_BASE
public static final Object VALUE_RESOLUTION_VARIANT_BASE
- Начиная с версии:
- 9
- См. также:
VALUE_RESOLUTION_VARIANT_SIZE_FIT
public static final Object VALUE_RESOLUTION_VARIANT_SIZE_FIT
- Начиная с версии:
- 9
- См. также:
VALUE_RESOLUTION_VARIANT_DPI_FIT
public static final Object VALUE_RESOLUTION_VARIANT_DPI_FIT
- Начиная с версии:
- 9
- См. также:
Краткое описание конструкторов
RenderingHints
public RenderingHints(Map<RenderingHints.Key, ?> init)
- Параметры:
-
init— карта пар «ключ/значение» для инициализации подсказок или null, если объект должен быть пустым
RenderingHints
public RenderingHints(RenderingHints.Key key, Object value)
- Параметры:
-
key— ключ соответствующего свойства подсказки -
value— значение свойства подсказки, заданного с помощьюkey
Подробное описание методов
size
isEmpty
containsKey
public boolean containsKey(Object key)
true, если этот RenderingHints содержит отображение для указанного ключа.- Определено в:
-
containsKeyв интерфейсеMap<Object,Object> - Параметры:
-
key— ключ, наличие которого в этомRenderingHintsпроверяется. - Возвращает:
-
true, если этотRenderingHintsсодержит отображение для указанного ключа. - Вызывает исключение:
-
ClassCastException— если ключ нельзя привести к типуRenderingHints.Key
containsValue
public boolean containsValue(Object value)
true тогда и только тогда, когда этот RenderingHints содержит хотя бы одно отображение на значение v, для которого (value==null ? v==null : value.equals(v)). Для большинства реализаций эта операция, вероятно, потребует времени, линейно зависящего от размера
RenderingHints RenderingHints.- Определено в:
-
containsValueв интерфейсеMap<Object,Object> - Параметры:
-
value— значение, наличие которого в этомRenderingHintsпроверяется. - Возвращает:
-
true, если этотRenderingHintsсопоставляет одному или нескольким ключам указанное значение.
get
public Object get(Object key)
- Определено в:
-
getв интерфейсеMap<Object,Object> - Параметры:
-
key— ключ подсказки рендеринга - Возвращает:
- значение, сопоставленное ключу в этом объекте, или
null, если ключу в этом объекте не сопоставлено никакое значение. - Вызывает исключение:
-
ClassCastException— если ключ нельзя привести к типуRenderingHints.Key - См. также:
put
public Object put(Object key, Object value)
key указанному value в этом объекте RenderingHints. Ни ключ, ни значение не могут быть null. Значение можно получить, вызвав метод get с ключом, равным исходному ключу.- Определено в:
-
putв интерфейсеMap<Object,Object> - Параметры:
-
key— ключ подсказки рендеринга. -
value— значение подсказки рендеринга. - Возвращает:
- предыдущее значение указанного ключа в этом объекте или
null, если такого значения не было. - Вызывает исключение:
-
NullPointerException— если ключ равенnull. -
ClassCastException— если ключ нельзя привести к типуRenderingHints.Key -
IllegalArgumentException— если методKey.isCompatibleValue()указанного ключа возвращает false для указанного значения - См. также:
add
public void add(RenderingHints hints)
RenderingHints в этот объект RenderingHints. Ключи, присутствующие в этом объекте RenderingHints, но отсутствующие в указанном объекте RenderingHints, не затрагиваются.- Параметры:
-
hints— набор пар «ключ/значение», добавляемых в этот объектRenderingHints
clear
remove
public Object remove(Object key)
RenderingHints. Если ключ отсутствует в этом объекте RenderingHints, метод ничего не делает.- Определено в:
-
removeв интерфейсеMap<Object,Object> - Параметры:
-
key— ключ подсказки рендеринга, который необходимо удалить - Возвращает:
- значение, ранее сопоставленное ключу в этом объекте
RenderingHints, илиnull, если ключу не было сопоставлено значение. - Вызывает исключение:
-
ClassCastException— если ключ нельзя привести к типуRenderingHints.Key
putAll
public void putAll(Map<?,?> m)
Map в этот RenderingHints. Эти отображения заменяют все отображения, имевшиеся в этом RenderingHints для ключей, присутствующих в указанном Map.- Определено в:
-
putAllв интерфейсеMap<Object,Object> - Параметры:
-
m— указанноеMap - Вызывает исключение:
-
ClassCastException— класс ключа или значения в указанномMapне позволяет сохранить его в этомRenderingHints. -
IllegalArgumentException— некоторые свойства ключа или значения в указанномMapне позволяют сохранить его в этомRenderingHints.
keySet
public Set<Object> keySet()
Set ключей, содержащихся в этом RenderingHints. Набор связан с RenderingHints, поэтому изменения в RenderingHints отражаются в Set, и наоборот. Если RenderingHints изменяется во время итерации по Set, результаты итерации не определены. Set поддерживает удаление элементов, которое удаляет соответствующее отображение из RenderingHints, с помощью операций Iterator.remove, Set.remove, removeAll retainAll и clear. Операции add и addAll не поддерживаются.values
public Collection<Object> values()
Collection значений, содержащихся в этом RenderingHints. Collection связано с RenderingHints, поэтому изменения в RenderingHints отражаются в Collection, и наоборот. Если RenderingHints изменяется во время итерации по Collection, результаты итерации не определены. Collection поддерживает удаление элементов, которое удаляет соответствующее отображение из RenderingHints, с помощью операций Iterator.remove, Collection.remove, removeAll, retainAll и clear. Операции add и addAll не поддерживаются.entrySet
public Set<Map.Entry<Object,Object>> entrySet()
Set отображений, содержащихся в этом RenderingHints. Каждый элемент возвращаемого Set является Map.Entry. Set связано с RenderingHints, поэтому изменения в RenderingHints отражаются в Set. Если RenderingHints изменяется во время итерации по Set, результаты итерации не определены. Набор entrySet, возвращаемый объектом RenderingHints, нельзя изменять.
equals
public boolean equals(Object o)
Object с этим RenderingHints на равенство. Возвращает true, если указанный объект также является Map и оба объекта Map представляют одинаковые отображения. Точнее, два объекта Map t1 и t2 представляют одинаковые отображения, если t1.keySet().equals(t2.keySet()) и для каждого ключа k в t1.keySet() выполняется (t1.get(k)==null ? t2.get(k)==null : t1.get(k).equals(t2.get(k))). Это гарантирует корректную работу метода
equals для различных реализаций интерфейса Map.hashCode
public int hashCode()
RenderingHints. Хеш-код RenderingHints определяется как сумма хеш-кодов каждого Entry в представлении entrySet объекта RenderingHints. Это гарантирует, что t1.equals(t2) влечет t1.hashCode()==t2.hashCode() для любых двух объектов Map t1 и t2, как того требует общий контракт Object.hashCode.clone
toString
© 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/RenderingHints.html