|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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.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
类创建的子类,Image
类包含带有一个 ImageObserver
参数的方法,用于从潜在 ImageProducer
收到信息时的异步通知。由于此 VolatileImage
不是从异步源加载的,因此带有 ImageObserver
参数的不同方法的行为就好像已经从 ImageProducer
中获得了数据。明确地说,这意味着这些方法的返回值永远不会指示信息还不是可用的,并且永远不需要为了异步回调通知而记录这些方法中使用的 ImageObserver
。
字段摘要 | |
---|---|
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() 如果由于最后一次调用 validate 导致呈现数据丢失,则返回 true 。 |
abstract Graphics2D |
createGraphics() 创建一个 Graphics2D ,可以将它绘制到此 VolatileImage 中。 |
void |
flush() 释放此图像当前占用的系统资源。 |
abstract ImageCapabilities |
getCapabilities() 返回 ImageCapabilities 对象,查询此对象即可了解此 VolatileImage 的特定功能。 |
Graphics |
getGraphics() 此方法返回 Graphics2D ,但此处是出于向后兼容性的考虑。 |
abstract int |
getHeight() 返回此 VolatileImage 的高度。 |
abstract BufferedImage |
getSnapshot() 返回此对象的静态快照图像。 |
ImageProducer |
getSource() 此方法返回此 VolatileImage 的 ImageProducer。 |
int |
getTransparency() 返回透明度。 |
abstract int |
getWidth() 返回 VolatileImage 的宽度。 |
abstract int |
validate(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
- 创建此图像所使用的透明度值。
构造方法详细信息 |
---|
VolatileImage
public VolatileImage()
方法详细信息 |
---|
getSnapshot
public abstract BufferedImage getSnapshot()
-
返回此对象的静态快照图像。返回的
BufferedImage
仅与请求时刻的VolatileImage
保持一致,不随VolatileImage
未来的更改而更新。 -
-
- 返回:
-
此
VolatileImage
的BufferedImage
表示形式 - 另请参见:
-
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()。 -
- 返回:
-
ImageProducer
,它可以为此 Image 的BufferedImage
表示形式生成像素。 - 另请参见:
-
ImageProducer
,getSnapshot()