所有类


java.awt.image
类 VolatileImage

java.lang.Object
  继承者 java.awt.Image
      继承者 java.awt.image.VolatileImage
所有已实现的接口:
Transparency

public abstract class VolatileImage
   
   
   
   
   
extends Image
implements Transparency

VolatileImage 是一种图像,它可以根据不受应用程序控制的情形(例如,由操作系统或其他应用程序引起的情况)随时丢失其内容。由于存在硬件加速的潜力,VolatileImage 对象在某些平台上能够获得显著的性能受益。

图像的绘图表面(图像内容实际驻留的内存)可以丢失或失效,从而引起该内存的内容丢失。因此,绘图表面需要恢复或重新创建,该表面的内容需要重新呈现。VolatileImage 提供了一个接口,此接口允许用户检测这些问题,并在出现这些问题时修复它们。

不能直接为此图像创建子类,而应该使用 Component.createVolatileImageGraphicsConfiguration.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 类创建的子类,Image 类包含带有一个 ImageObserver 参数的方法,用于从潜在 ImageProducer 收到信息时的异步通知。由于此 VolatileImage 不是从异步源加载的,因此带有 ImageObserver 参数的不同方法的行为就好像已经从 ImageProducer 中获得了数据。明确地说,这意味着这些方法的返回值永远不会指示信息还不是可用的,并且永远不需要为了异步回调通知而记录这些方法中使用的 ImageObserver


字段摘要
static intIMAGE_INCOMPATIBLE
          经验证的图像与提供的 GraphicsConfiguration 对象不兼容,应该重新创建适当的图像。
static intIMAGE_OK
          经验证的图像准备按原样使用。
static intIMAGE_RESTORED
          经验证的图像已经被恢复并准备使用。
protected  inttransparency
          创建此图像所使用的透明度值。
 
从类 java.awt.Image 继承的字段
accelerationPriority, SCALE_AREA_AVERAGING, SCALE_DEFAULT, SCALE_FAST, SCALE_REPLICATE, SCALE_SMOOTH, UndefinedProperty
 
从接口 java.awt.Transparency 继承的字段
BITMASK, OPAQUE, TRANSLUCENT
 
构造方法摘要
VolatileImage()
           
 
方法摘要
abstract  booleancontentsLost()
          如果由于最后一次调用 validate 导致呈现数据丢失,则返回 true
abstract  Graphics2DcreateGraphics()
          创建一个 Graphics2D,可以将它绘制到此 VolatileImage 中。
 voidflush()
          释放此图像当前占用的系统资源。
abstract  ImageCapabilitiesgetCapabilities()
          返回 ImageCapabilities 对象,查询此对象即可了解此 VolatileImage 的特定功能。
 GraphicsgetGraphics()
          此方法返回 Graphics2D,但此处是出于向后兼容性的考虑。
abstract  intgetHeight()
          返回此 VolatileImage 的高度。
abstract  BufferedImagegetSnapshot()
          返回此对象的静态快照图像。
 ImageProducergetSource()
          此方法返回此 VolatileImage 的 ImageProducer。
 intgetTransparency()
          返回透明度。
abstract  intgetWidth()
          返回 VolatileImage 的宽度。
abstract  intvalidate(GraphicsConfiguration gc)
          如果由于最后一次调用 validate 以来绘图表面丢失,则试图恢复图像的绘图表面。
 
从类 java.awt.Image 继承的方法
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

public VolatileImage()
方法详细信息

getSnapshot

public abstract BufferedImage getSnapshot()
返回此对象的静态快照图像。返回的 BufferedImage 仅与请求时刻的 VolatileImage 保持一致,不随 VolatileImage 未来的更改而更新。

返回:
VolatileImageBufferedImage 表示形式
另请参见:
BufferedImage

getWidth

public abstract int getWidth()
返回 VolatileImage 的宽度。

返回:
VolatileImage 的宽度。

getHeight

public abstract int getHeight()
返回此 VolatileImage 的高度。

返回:
VolatileImage 的高度。

getSource

public ImageProducer getSource()
此方法返回此 VolatileImage 的 ImageProducer。注意,用于呈现操作和位图传输到屏幕或其他 VolatileImage 对象时,VolatileImage 对象很理想,但用于读回图像的像素时则相反。因此,诸如 getSource 这类操作的执行速度可能不如不依赖读取像素的操作。同样要注意,从图像读取的像素值只与检索时图像里的像素值保持一致。此方法在作出请求时拍下图像的快照,返回的 ImageProducer 对象使用该静态快照,而不是原始的 VolatileImage 进行工作。调用 getSource() 等效于调用 getSnapshot().getSource()。

指定者:
Image 中的 getSource
返回:
ImageProducer,它可以为此 Image 的 BufferedImage 表示形式生成像素。
另请参见:
ImageProducer, getSnapshot()