Spec-Zone.ru › OpenJDK 17

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

Краткое описание конструкторов

VolatileImage()
Модификатор Конструктор Описание
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(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 не определено.
См. также:
  • Значения константных полей

transparency

protected int transparency
Значение прозрачности, с которым было создано это изображение.
С тех пор:
1.5
См. также:
  • GraphicsConfiguration.createCompatibleVolatileImage(int, int,int)
  • GraphicsConfiguration.createCompatibleVolatileImage(int, int,ImageCapabilities,int)
  • Transparency

Подробное описание конструкторов

VolatileImage

protected VolatileImage()
Конструктор для вызова подклассами.

Подробное описание методов

getSnapshot

public abstract BufferedImage getSnapshot()
Возвращает статическое изображение-снимок этого объекта. Возвращаемое BufferedImage соответствует VolatileImage на момент запроса и не будет обновляться при любых будущих изменениях в 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
Возвращает:
ImageProducer, который можно использовать для создания пикселей для BufferedImage представления этого изображения.
См. также:
  • ImageProducer
  • getSnapshot()

getGraphics

public Graphics getGraphics()
Этот метод возвращает Graphics2D, но используется для обратной совместимости. createGraphics удобнее, так как он объявлен для возврата Graphics2D.
Определено в:
getGraphics в классе Image
Возвращает:
Graphics2D, который можно использовать для рисования в этом изображении.
См. также:
  • Graphics
  • Component.createImage(int, int)

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, и это значение возврата ничего не говорит о необходимости восстановления изображения.
См. также:
  • GraphicsConfiguration
  • Component
  • IMAGE_OK
  • IMAGE_RESTORED
  • IMAGE_INCOMPATIBLE

contentsLost

public abstract boolean contentsLost()
Возвращает true если данные рендеринга были потеряны с момента последнего вызова validate. Этот метод должен вызываться приложением в конце любой серии операций рендеринга к или из изображения, чтобы определить, нужно ли проверять изображение и переделывать рендеринг.
Возвращает:
true если поверхность рисования нужно восстановить; false в противном случае.

getCapabilities

public abstract ImageCapabilities getCapabilities()
Возвращает объект ImageCapabilities, который можно запросить для получения определённых возможностей этого VolatileImage. Это позволит программистам получить дополнительную информацию о runtime для конкретного объекта 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, 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API