Класс VolatileImage
- Все реализуемые интерфейсы:
Transparency
public abstract class VolatileImage extends Image implements Transparency
Поверхность рисования изображения (область памяти, в которой фактически находится содержимое изображения) может быть утрачена или стать недействительной, что приведёт к потере данных в этой области памяти. Поэтому поверхность рисования необходимо восстановить или создать заново, а её содержимое — повторно отрисовать. VolatileImage предоставляет интерфейс, позволяющий пользователю обнаруживать такие проблемы и устранять их при возникновении.
При создании объекта VolatileImage могут выделяться ограниченные системные ресурсы, например видеопамять (VRAM), необходимые для поддержки изображения. Когда объект VolatileImage больше не используется, он может быть удалён сборщиком мусора, а системные ресурсы будут освобождены, однако это происходит не в гарантированные сроки. Приложения, создающие множество объектов VolatileImage (например, окно с изменяемым размером может потребовать повторного создания буфера обратной записи при каждом изменении размера), могут лишиться оптимальных системных ресурсов для новых объектов VolatileImage просто потому, что старые объекты ещё не были удалены из системы. (Новые объекты VolatileImage всё ещё можно создавать, но они могут работать не так эффективно, как объекты, размещённые в ускоренной памяти.) Метод flush можно вызвать в любой момент, чтобы заранее освободить ресурсы, используемые VolatileImage, и не допустить, чтобы он препятствовал аппаратному ускорению последующих объектов VolatileImage. Таким образом приложения могут лучше контролировать состояние ресурсов, занятых устаревшими объектами VolatileImage.
Этот класс не следует наследовать напрямую; его следует создавать с помощью методов Component.createVolatileImage или GraphicsConfiguration.createCompatibleVolatileImage(int, int).
Пример использования объекта VolatileImage:
// image creation
VolatileImage vImg = createVolatileImage(w, h);
// rendering to the image
void renderOffscreen() {
do {
if (vImg.validate(getGraphicsConfiguration()) ==
VolatileImage.IMAGE_INCOMPATIBLE)
{
// old vImg doesn't work with new GraphicsConfig; re-create it
vImg = createVolatileImage(w, h);
}
Graphics2D g = vImg.createGraphics();
//
// miscellaneous rendering commands...
//
g.dispose();
} while (vImg.contentsLost());
}
// copying from the image (here, gScreen is the Graphics
// object for the onscreen window)
do {
int returnCode = vImg.validate(getGraphicsConfiguration());
if (returnCode == VolatileImage.IMAGE_RESTORED) {
// Contents need to be restored
renderOffscreen(); // restore contents
} else if (returnCode == VolatileImage.IMAGE_INCOMPATIBLE) {
// old vImg doesn't work with new GraphicsConfig; re-create it
vImg = createVolatileImage(w, h);
renderOffscreen();
}
gScreen.drawImage(vImg, 0, 0, this);
} while (vImg.contentsLost());
Обратите внимание, что этот класс наследуется от класса Image, содержащего методы, принимающие параметр ImageObserver для асинхронных уведомлений по мере получения данных от потенциального ImageProducer. Поскольку этот VolatileImage не загружается из асинхронного источника, различные методы, принимающие параметр ImageObserver, будут вести себя так, как если бы данные уже были получены из ImageProducer. В частности, это означает, что возвращаемые такими методами значения никогда не укажут на то, что информация ещё недоступна, а ImageObserver, используемый в таких методах, не потребуется сохранять для асинхронного уведомления обратным вызовом.
- С версии:
- 1.4
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
IMAGE_INCOMPATIBLE |
Проверенное изображение несовместимо с переданным объектом GraphicsConfiguration и должно быть создано заново соответствующим образом. |
static final int |
IMAGE_OK |
Проверенное изображение готово к использованию без изменений. |
static final int |
IMAGE_RESTORED |
Проверенное изображение восстановлено и готово к использованию. |
protected int |
transparency |
Значение прозрачности, с которым было создано это изображение. |
Поля, объявленные в классе Image
accelerationPriority, SCALE_AREA_AVERAGING, SCALE_DEFAULT, SCALE_FAST, SCALE_REPLICATE, SCALE_SMOOTH, UndefinedProperty | Модификатор и тип | Поле | Описание |
|---|---|---|
protected float |
accelerationPriority |
Приоритет аппаратного ускорения для этого изображения. |
static final int |
SCALE_AREA_AVERAGING |
Использовать алгоритм масштабирования изображения с усреднением по области. |
static final int |
SCALE_DEFAULT |
Использовать алгоритм масштабирования изображения по умолчанию. |
static final int |
SCALE_FAST |
Выбрать алгоритм масштабирования изображения, отдающий приоритет скорости масштабирования, а не плавности масштабированного изображения. |
static final int |
SCALE_REPLICATE |
Использовать алгоритм масштабирования изображения, реализованный в классе ReplicateScaleFilter. |
static final int |
SCALE_SMOOTH |
Выбрать алгоритм масштабирования изображения, отдающий приоритет плавности изображения, а не скорости масштабирования. |
static final Object |
UndefinedProperty |
Объект UndefinedProperty должен возвращаться при запросе свойства, не определённого для конкретного изображения. |
Поля, объявленные в интерфейсе Transparency
BITMASK, OPAQUE, TRANSLUCENT | Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
BITMASK |
Представляет данные изображения, для которых гарантируется, что они либо полностью непрозрачны (значение альфа-канала 1.0), либо полностью прозрачны (значение альфа-канала 0.0). |
static final int |
OPAQUE |
Представляет данные изображения, для которых гарантируется полная непрозрачность, то есть значение альфа-канала всех пикселей равно 1.0. |
static final int |
TRANSLUCENT |
Представляет данные изображения, содержащие или потенциально содержащие произвольные значения альфа-канала в диапазоне от 0.0 до 1.0 включительно. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Конструктор для вызова из подклассов. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract boolean |
contentsLost() |
Возвращает true, если с момента последнего вызова validate были утрачены данные для отрисовки. |
abstract Graphics2D |
createGraphics() |
Создаёт Graphics2D, который можно использовать для рисования в этом VolatileImage. |
abstract ImageCapabilities |
getCapabilities() |
Возвращает объект ImageCapabilities, позволяющий получить сведения о конкретных возможностях этого VolatileImage. |
Graphics |
getGraphics() |
Этот метод возвращает Graphics2D, но сохранён для обратной совместимости. |
abstract int |
getHeight() |
Возвращает высоту VolatileImage. |
abstract BufferedImage |
getSnapshot() |
Возвращает статический снимок этого объекта. |
ImageProducer |
getSource() |
Возвращает ImageProducer для этого VolatileImage. |
int |
getTransparency() |
Возвращает прозрачность. |
abstract int |
getWidth() |
Возвращает ширину VolatileImage. |
abstract int |
validate |
Пытается восстановить поверхность рисования изображения, если она была утрачена с момента последнего вызова validate. |
Методы, объявленные в классе Image
flush, getAccelerationPriority, getCapabilities, getHeight, getProperty, getScaledInstance, getWidth, setAccelerationPriority | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
flush() |
Освобождает все восстанавливаемые ресурсы, используемые этим объектом Image. |
float |
getAccelerationPriority() |
Возвращает текущее значение подсказки о приоритете аппаратного ускорения. |
ImageCapabilities |
getCapabilities |
Возвращает объект ImageCapabilities, позволяющий узнать о возможностях этого Image в указанной конфигурации GraphicsConfiguration. |
abstract int |
getHeight |
Определяет высоту изображения. |
abstract Object |
getProperty |
Получает свойство этого изображения по имени. |
Image |
getScaledInstance |
Создаёт масштабированную версию этого изображения. |
abstract int |
getWidth |
Определяет ширину изображения. |
void |
setAccelerationPriority |
Задаёт подсказку о важности аппаратного ускорения для этого изображения. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии. Финализация объявлена устаревшей и может быть удалена в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения для этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате вызова метода notify или interrupt. |
final void |
wait |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание полей
IMAGE_OK
public static final int IMAGE_OK
- См. также:
IMAGE_RESTORED
public static final int IMAGE_RESTORED
- См. также:
IMAGE_INCOMPATIBLE
public static final int IMAGE_INCOMPATIBLE
GraphicsConfiguration и должно быть создано заново соответствующим образом. Использование изображения без изменений после получения этого кода возврата от validate не определено.- См. также:
transparency
protected int transparency
- С версии:
- 1.5
- См. также:
Подробное описание конструкторов
VolatileImage
protected VolatileImage()
Подробное описание методов
getSnapshot
public abstract BufferedImage getSnapshot()
BufferedImage актуален только для VolatileImage на момент запроса и не будет обновляться при любых последующих изменениях VolatileImage.- Возвращает:
- представление
VolatileImageв видеBufferedImage - См. также:
getWidth
public abstract int getWidth()
VolatileImage.- Возвращает:
- ширину этого
VolatileImage.
getHeight
public abstract int getHeight()
VolatileImage.- Возвращает:
- высоту этого
VolatileImage.
getSource
public ImageProducer getSource()
getSource, могут выполняться медленнее, чем операции, не требующие чтения пикселей. Также обратите внимание, что считанные значения пикселей соответствуют содержимому изображения только на момент их получения. Этот метод создаёт снимок изображения в момент вызова, а возвращаемый объект ImageProducer работает с этим статическим снимком, а не с исходным VolatileImage. Вызов getSource() эквивалентен вызову getSnapshot().getSource().- Определено в:
-
getSourceв классеImage - Возвращает:
ImageProducer, с помощью которого можно получить пиксели дляBufferedImage-представления этого Image.- См. также:
getGraphics
public Graphics getGraphics()
Graphics2D, но сохранён для обратной совместимости. Метод createGraphics удобнее, поскольку объявлен с возвращаемым типом Graphics2D.- Определено в:
-
getGraphicsв классеImage - Возвращает:
Graphics2D, который можно использовать для рисования в этом изображении.- См. также:
createGraphics
public abstract Graphics2D createGraphics()
Graphics2D, который можно использовать для рисования в этом VolatileImage.- Возвращает:
Graphics2D, используемый для рисования в этом изображении.
validate
public abstract int validate(GraphicsConfiguration gc)
validate. Также проверяет совместимость этого изображения с переданным параметром GraphicsConfiguration, чтобы определить, совместимы ли операции с этим изображением и GraphicsConfiguration. Например, объект VolatileImage может быть создан на одном графическом устройстве, а затем использован для отрисовки на другом графическом устройстве. Поскольку объекты VolatileImage обычно зависят от конкретного устройства, такая операция может работать не так, как ожидается; поэтому код возврата этого вызова validate укажет на несовместимость. Нулевое или некорректное значение gc может привести к возврату некорректных значений из validate и вызвать проблемы при последующей отрисовке.- Параметры:
-
gc— объектGraphicsConfiguration, относительно которого проверяется совместимость этого изображения. Нулевое значение gc означает, что метод validate должен пропустить проверку совместимости. - Возвращает:
-
IMAGE_OK, если изображение не требовало проверки
IMAGE_RESTORED, если изображение требовало восстановления. Восстановление означает, что содержимое изображения могло измениться и изображение может потребоваться отрисовать заново.
IMAGE_INCOMPATIBLE, если изображение несовместимо с объектомGraphicsConfiguration, переданным в методvalidate. Несовместимость означает, что изображение может потребоваться создать заново с новой конфигурациейComponentилиGraphicsConfiguration, чтобы получить изображение, которое можно успешно использовать с этойGraphicsConfiguration. Для несовместимого изображения не проверяется необходимость восстановления, поэтому после возврата значенияIMAGE_INCOMPATIBLEсостояние изображения не изменяется; это значение также ничего не говорит о необходимости восстановления изображения. - См. также:
contentsLost
public abstract boolean contentsLost()
true, если с момента последнего вызова validate были утрачены данные для отрисовки. Приложению следует вызывать этот метод после завершения любой серии операций отрисовки в изображение или из него, чтобы проверить, требуется ли проверить изображение и выполнить отрисовку повторно.- Возвращает:
-
true, если поверхность рисования необходимо восстановить; в противном случае —false.
getCapabilities
public abstract ImageCapabilities getCapabilities()
- Возвращает:
- объект
ImageCapabilities, содержащий сведения о возможностях этогоVolatileImage. - С версии:
- 1.4
getTransparency
public int getTransparency()
- Определено в:
-
getTransparencyв интерфейсеTransparency - Возвращает:
- тип прозрачности этого
VolatileImage. - С версии:
- 1.5
- См. также:
© 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.