Spec-Zone.ru › OpenJDK 27

Класс VolatileImage

java.lang.Object
java.awt.Image
java.awt.image.VolatileImage
Все реализуемые интерфейсы:
Transparency
public abstract class VolatileImage extends Image implements Transparency
VolatileImage — это изображение, содержимое которого может быть утрачено в любой момент по причинам, не зависящим от приложения (например, в ситуациях, вызванных операционной системой или другими приложениями). Благодаря возможности аппаратного ускорения объект VolatileImage может обеспечить значительный прирост производительности на некоторых платформах.

Поверхность рисования изображения (область памяти, в которой фактически находится содержимое изображения) может быть утрачена или стать недействительной, что приведёт к потере данных в этой области памяти. Поэтому поверхность рисования необходимо восстановить или создать заново, а её содержимое — повторно отрисовать. 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 включительно.

Краткое описание конструкторов

VolatileImage()
Модификатор Конструктор Описание
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(GraphicsConfiguration gc)
Пытается восстановить поверхность рисования изображения, если она была утрачена с момента последнего вызова validate.

Методы, объявленные в классе Image

flush, getAccelerationPriority, getCapabilities, getHeight, getProperty, getScaledInstance, getWidth, setAccelerationPriority
Модификатор и тип Метод Описание
void flush()
Освобождает все восстанавливаемые ресурсы, используемые этим объектом Image.
float getAccelerationPriority()
Возвращает текущее значение подсказки о приоритете аппаратного ускорения.
ImageCapabilities getCapabilities(GraphicsConfiguration gc)
Возвращает объект ImageCapabilities, позволяющий узнать о возможностях этого Image в указанной конфигурации GraphicsConfiguration.
abstract int getHeight(ImageObserver observer)
Определяет высоту изображения.
abstract Object getProperty(String name, ImageObserver observer)
Получает свойство этого изображения по имени.
Image getScaledInstance(int width, int height, int hints)
Создаёт масштабированную версию этого изображения.
abstract int getWidth(ImageObserver observer)
Определяет ширину изображения.
void setAccelerationPriority(float priority)
Задаёт подсказку о важности аппаратного ускорения для этого изображения.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли этот объект какому-либо другому объекту.
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(long timeoutMillis)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате вызова метода 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
См. также:
  • GraphicsConfiguration.createCompatibleVolatileImage(int, int,int)
  • GraphicsConfiguration.createCompatibleVolatileImage(int, int,ImageCapabilities,int)
  • Transparency

Подробное описание конструкторов

VolatileImage

protected VolatileImage()
Конструктор для вызова из подклассов.

Подробное описание методов

getSnapshot

public abstract BufferedImage getSnapshot()
Возвращает статический снимок этого объекта. Возвращённый BufferedImage актуален только для VolatileImage на момент запроса и не будет обновляться при любых последующих изменениях VolatileImage.
Возвращает:
представление VolatileImage в виде BufferedImage
См. также:
  • BufferedImage

getWidth

public abstract int getWidth()
Возвращает ширину VolatileImage.
Возвращает:
ширину этого VolatileImage.

getHeight

public abstract int getHeight()
Возвращает высоту VolatileImage.
Возвращает:
высоту этого VolatileImage.

getSource

public ImageProducer getSource()
Возвращает ImageProducer для этого VolatileImage. Обратите внимание, что объект VolatileImage оптимизирован для операций отрисовки и копирования на экран или в другие объекты VolatileImage, а не для считывания пикселей изображения. Поэтому такие операции, как getSource, могут выполняться медленнее, чем операции, не требующие чтения пикселей. Также обратите внимание, что считанные значения пикселей соответствуют содержимому изображения только на момент их получения. Этот метод создаёт снимок изображения в момент вызова, а возвращаемый объект ImageProducer работает с этим статическим снимком, а не с исходным VolatileImage. Вызов getSource() эквивалентен вызову getSnapshot().getSource().
Определено в:
getSource в классе Image
Возвращает:
ImageProducer, с помощью которого можно получить пиксели для BufferedImage-представления этого Image.
См. также:
  • ImageProducer
  • getSnapshot()

getGraphics

public Graphics getGraphics()
Этот метод возвращает Graphics2D, но сохранён для обратной совместимости. Метод createGraphics удобнее, поскольку объявлен с возвращаемым типом Graphics2D.
Определено в:
getGraphics в классе Image
Возвращает:
Graphics2D, который можно использовать для рисования в этом изображении.
См. также:
  • Graphics
  • Component.createImage(int, int)

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 состояние изображения не изменяется; это значение также ничего не говорит о необходимости восстановления изображения.
См. также:
  • GraphicsConfiguration
  • Component
  • IMAGE_OK
  • IMAGE_RESTORED
  • IMAGE_INCOMPATIBLE

contentsLost

public abstract boolean contentsLost()
Возвращает true, если с момента последнего вызова validate были утрачены данные для отрисовки. Приложению следует вызывать этот метод после завершения любой серии операций отрисовки в изображение или из него, чтобы проверить, требуется ли проверить изображение и выполнить отрисовку повторно.
Возвращает:
true, если поверхность рисования необходимо восстановить; в противном случае — false.

getCapabilities

public abstract ImageCapabilities getCapabilities()
Возвращает объект ImageCapabilities, позволяющий получить сведения о конкретных возможностях этого VolatileImage. Это даёт программистам возможность узнать дополнительную информацию во время выполнения о созданном ими объекте VolatileImage. Например, пользователь может создать VolatileImage, но в системе может не остаться видеопамяти для изображения такого размера. Поэтому, хотя объект и является VolatileImage, он может иметь меньше возможностей аппаратного ускорения, чем другие объекты VolatileImage на этой платформе. Пользователю может понадобиться эта информация, чтобы найти другие решения своей задачи.
Возвращает:
объект ImageCapabilities, содержащий сведения о возможностях этого VolatileImage.
С версии:
1.4

getTransparency

public int getTransparency()
Возвращает тип прозрачности: OPAQUE, BITMASK или TRANSLUCENT.
Определено в:
getTransparency в интерфейсе Transparency
Возвращает:
тип прозрачности этого VolatileImage.
С версии:
1.5
См. также:
  • Transparency.OPAQUE
  • Transparency.BITMASK
  • Transparency.TRANSLUCENT

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API