- java.lang.Object
-
- java.awt.Image
-
- java.awt.image.VolatileImage
-
- 实现的所有接口
-
Transparency
public abstract class VolatileImageextends Imageimplements 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
类的子类,其中包括从潜在的ImageProducer
收到信息时为异步通知采用ImageObserver
参数的方法。 由于此VolatileImage
未从异步源加载,因此采用ImageObserver
参数的各种方法的行为就像已从ImageProducer
获取数据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
-
Fields declared in interface 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()
这将返回此VolatileImage的ImageProducer。int
getTransparency()
返回透明度。abstract int
getWidth()
返回VolatileImage
的宽度。abstract int
validate(GraphicsConfiguration gc)
如果自上次调用validate
以来表面已丢失,则尝试恢复图像的绘图表面。-
声明方法的类 java.awt.Image
flush, getAccelerationPriority, getCapabilities, getHeight, getProperty, getScaledInstance, getWidth, setAccelerationPriority
-
-
-
-
字段详细信息
-
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
收到此返回代码后,validate
使用图像是未定义的。- 另请参见:
- 常数字段值
-
transparency
protected int transparency
用于创建此图像的透明度值。
-
-
方法详细信息
-
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()
这将返回此VolatileImage的ImageProducer。 请注意,VolatileImage对象针对渲染操作和blitting到屏幕或其他VolatileImage对象进行了优化,而不是回读图像的像素。 因此,诸如getSource
操作可能不会像不依赖于读取像素的操作那样快。 另请注意,从图像读取的像素值仅与图像中的像素值在检索时一致。 此方法在发出请求时获取图像的快照,并且返回的ImageProducer对象与该静态快照图像一起使用,而不是原始的VolatileImage。 调用getSource()等同于调用getSnapshot()。getSource()。- Specified by:
-
getSource
在类Image
- 结果
-
ImageProducer
可用于生成此图像的BufferedImage
表示的像素。 - 另请参见:
-
ImageProducer
,getSnapshot()
-
getGraphics
public Graphics getGraphics()
此方法返回Graphics2D
,但此处是为了向后兼容。createGraphics
更方便,因为它被声明返回Graphics2D
。- Specified by:
-
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对象往往是特定于设备的,因此此操作可能无法按预期工作,因此此验证调用的返回代码会注意到不兼容性。 gc的值为null或不正确可能导致从validate
返回不正确的值,并可能导致以后渲染问题。- 参数
-
gc
- 要对此图像进行验证的GraphicsConfiguration
对象。 null gc意味着validate方法应该跳过兼容性测试。 - 结果
-
IMAGE_OK
如果图像不需要验证
IMAGE_RESTORED
如果图像需要恢复。 恢复意味着图像的内容可能已受到影响,并且可能需要重新渲染图像。
IMAGE_INCOMPATIBLE
如果图像与传递到validate
方法的GraphicsConfiguration
对象不兼容。 不兼容意味着可能需要使用新的Component
或GraphicsConfiguration
重新创建图像,以获得可与此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对象那样加速。 用户可能希望该信息找到其问题的其他解决方案。- 结果
- 包含此
VolatileImage
功能的ImageCapabilities
对象。 - 从以下版本开始:
- 1.4
-
getTransparency
public int getTransparency()
返回透明度。 返回OPAQUE,BITMASK或TRANSLUCENT。- Specified by:
-
getTransparency
在界面Transparency
- 结果
-
VolatileImage
的透明度。 - 从以下版本开始:
- 1.5
- 另请参见:
-
Transparency.OPAQUE
,Transparency.BITMASK
,Transparency.TRANSLUCENT
-
-