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