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

Проверенное изображение несовместимо с предоставленным объектом GraphicsConfiguration и должно быть пересоздано соответствующим образом.

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()

Возвращает 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.

Методы, объявленные в классе 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 представления этого Image.
См. также:
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 укажет на эту несовместимость. Нулевое или некорректное значение для gc может привести к некорректным значениям, возвращаемым из validate и может привести к последующим проблемам с рендерингом.

Параметры:
gc - объект GraphicsConfiguration для этого изображения для проверки на совместимость. Нулевое 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/image/VolatileImage.html

Spec-Zone .ru
спецификации, руководства, описания, API