Spec-Zone.ru › OpenJDK 25

Класс 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

Поля, объявленные в интерфейсе Transparency

BITMASK, OPAQUE, TRANSLUCENT

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

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

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

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
Возвращает:
BufferedImage представления этого Image, возвращающее пиксели, — ImageProducer.
См. также:
  • 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. Несовместимость означает, что для получения изображения, которое можно успешно использовать с этим GraphicsConfiguration, его может потребоваться создать заново с новой конфигурацией Component или 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/image/VolatileImage.html

Spec-Zone.ru

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