Класс 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 int |
IMAGE_INCOMPATIBLE Проверенное изображение несовместимо с предоставленным объектом |
static int |
IMAGE_OK Проверенное изображение готово к использованию. |
static 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 Краткое описание конструкторов
| Конструктор и описание |
|---|
VolatileImage() |
Краткое описание методов
| Модификатор и тип | Метод и описание |
|---|---|
abstract boolean |
contentsLost() Возвращает |
abstract Graphics2D |
createGraphics() Создаёт |
abstract ImageCapabilities |
getCapabilities() Возвращает объект ImageCapabilities, который можно использовать для получения информации о специфических возможностях данного VolatileImage. |
Graphics |
getGraphics() Этот метод возвращает |
abstract int |
getHeight() Возвращает высоту |
abstract BufferedImage |
getSnapshot() Возвращает статичное мгновенное изображение этого объекта. |
ImageProducer |
getSource() Возвращает ImageProducer для данного VolatileImage. |
int |
getTransparency() Возвращает значение прозрачности. |
abstract int |
getWidth() Возвращает ширину |
abstract int |
validate(GraphicsConfiguration gc) Попытка восстановить поверхность отрисовки изображения, если поверхность была потеряна с момента последнего вызова |
Методы, унаследованные от класса java.awt.Image
flush, getAccelerationPriority, getCapabilities, getHeight, getProperty, getScaledInstance, getWidth, setAccelerationPriority Методы, унаследованные от класса java.lang.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 не определено.
- См. также:
- Значения константных полей
прозрачность
protected int transparency
Значение прозрачности, с которым было создано это изображение.
- С:
- 1.5
- См. также:
-
GraphicsConfiguration.createCompatibleVolatileImage(int, int,int),GraphicsConfiguration.createCompatibleVolatileImage(int, int,ImageCapabilities,int),Transparency
Конструкторы
VolatileImage
public VolatileImage()
Методы
getSnapshot
public abstract BufferedImage getSnapshot()
Возвращает статическое моментальное изображение этого объекта. Возвращаемое BufferedImage является актуальным только на момент запроса и не будет обновляться любыми будущими изменениями VolatileImage.
- Возвращает:
- представление
BufferedImageэтогоVolatileImage - См. также:
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 - Возвращает:
- an
ImageProducer, который может быть использован для создания пикселей дляBufferedImageпредставления этого изображения. - См. также:
-
ImageProducer,getSnapshot()
getGraphics
public Graphics getGraphics()
Этот метод возвращает Graphics2D, но присутствует для обратной совместимости. createGraphics более удобен, так как он объявлен как возвращающий Graphics2D.
- Определено в:
-
getGraphicsв классеImage - Возвращает:
- a
Graphics2D, который может быть использован для рисования в этом изображении. - См. также:
-
Graphics,Component.createImage(int, int)
createGraphics
public abstract Graphics2D createGraphics()
Создает Graphics2D, который может использоваться для рисования в этом VolatileImage.
- Возвращает:
- a
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, и это значение не говорит о том, нужно ли восстанавливать изображение. - См. также:
-
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
© 1993, 2020, 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.