Класс 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 не определено.- См. также:
transparency
protected int transparency
Подробное описание конструкторов
VolatileImage
protected VolatileImage()
Подробное описание методов
getSnapshot
public abstract BufferedImage getSnapshot()
BufferedImage соответствует VolatileImage на момент запроса и не будет обновляться при любых будущих изменениях в 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 укажет на эту несовместимость. Нулевое или неправильное значение 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, 2021, 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/17/docs/api/java.desktop/java/awt/image/VolatileImage.html