Класс 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 |
Значение прозрачности, с которым было создано это изображение. |
Поля, объявленные в классе java.awt.Image
accelerationPriority, SCALE_AREA_AVERAGING, SCALE_DEFAULT, SCALE_FAST, SCALE_REPLICATE, SCALE_SMOOTH, UndefinedProperty
Поля, объявленные в интерфейсе java.awt.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. |
Методы, объявленные в классе java.awt.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 не определено.- См. также:
прозрачность
protected int transparency
- С момента:
- 1.5
- См. также:
Подробное описание конструкторов
VolatileImage
protected VolatileImage()
Подробное описание методов
getSnapshot
public abstract BufferedImage getSnapshot()
BufferedImage является актуальным только на момент запроса и не будет обновляться любыми будущими изменениями в VolatileImage.- Возвращает:
- представление
BufferedImageэтогоVolatileImage - См. также:
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представления этого изображения. - См. также:
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 укажет на несовместимость. Значение null или некорректное значение для gc может привести к возвращению некорректных значений из validate и может привести к проблемам с рендерингом в дальнейшем.- Параметры:
-
gc- объектGraphicsConfigurationдля проверки этого изображения. null 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, 2023, 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/21/docs/api/java.desktop/java/awt/image/VolatileImage.html