|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.awt.Image java.awt.image.VolatileImage
public abstract class VolatileImage
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
類別創建的子類別,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 中。 |
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 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
欄位詳細資訊 |
---|
public static final int IMAGE_OK
public static final int IMAGE_RESTORED
public static final int IMAGE_INCOMPATIBLE
GraphicsConfiguration
物件不相容,應該重新創建適當的圖像。從 validate
收到此返回程式碼後按原樣使用圖像的行為是不明確的。
protected int transparency
GraphicsConfiguration.createCompatibleVolatileImage(int, int,int)
,
GraphicsConfiguration.createCompatibleVolatileImage(int, int,ImageCapabilities,int)
,
Transparency
建構子詳細資訊 |
---|
public VolatileImage()
方法詳細資訊 |
---|
public abstract BufferedImage getSnapshot()
BufferedImage
僅與請求時刻的 VolatileImage
保持一致,不隨 VolatileImage
未來的更改而更新。
VolatileImage
的 BufferedImage
表示形式BufferedImage
public abstract int getWidth()
VolatileImage
的寬度。
VolatileImage
的寬度。public abstract int getHeight()
VolatileImage
的高度。
VolatileImage
的高度。public ImageProducer getSource()
getSource
這類別操作的執行速度可能不如不依賴讀取像素的那些操作。同樣要注意,從圖像讀取的像素值只與獲取時圖像的像素值保持一致。此方法在作出請求時拍下圖像的快照,返回的 ImageProducer 物件使用該靜態快照,而不是原始的 VolatileImage 進行工作。調用 getSource() 等效於調用 getSnapshot().getSource()。
Image
中的 getSource
ImageProducer
,它可以為此 Image 的 BufferedImage
表示形式產生像素。ImageProducer
,
getSnapshot()
public Graphics getGraphics()
Graphics2D
,但它存在於此處是出於向後相容性的考慮。createGraphics
更為方便,因為它被宣告為返回 Graphics2D
。
Image
中的 getGraphics
Graphics2D
,可以將它繪製到此圖像中。Graphics
,
Component.createImage(int, int)
public abstract Graphics2D createGraphics()
Graphics2D
,可以將它繪製到此 VolatileImage
中。
Graphics2D
,用於繪製到此圖像中。public abstract int validate(GraphicsConfiguration gc)
validate
後繪製表面丟失,則試圖恢復圖像的繪製表面。還要依靠給定的 GraphicsConfiguration 參數驗證此圖像,即查看從此圖像到 GraphicsConfiguration 的操作是否相容。以下情形就是一個不相容組合的例子:VolatileImage 物件在一個圖形設備上創建,然後在另一個不同的圖形設備上呈現。由於 VolatileImage 物件與設備特別相關,此操作可能不會按預期進行,因此調用此 validate 返回的程式碼將記錄這種不相容性。null 或不正確的 gc 值可能引起 validate
返回不正確的值,隨後可能引起呈現問題。
gc
- 一個 GraphicsConfiguration
物件,圖像依靠此物件進行驗證。gc 為 null 意味著 validate 方法應該跳過相容性測試。
IMAGE_OK
。IMAGE_RESTORED
。恢復意味著圖像內容可能已受到影響,並且圖像可能需要重新呈現。validate
方法的 GraphicsConfiguration
物件不相容,則返回 IMAGE_INCOMPATIBLE
。不相容意味著圖像可能需要用新的 Component
或 GraphicsConfiguration
重新創建,以獲得一個能夠用此 GraphicsConfiguration
成功使用的圖像。不相容的圖像不會檢查是否需要恢復,因此在 IMAGE_INCOMPATIBLE
值返回後圖像的狀態不變,這個返回值與圖像是否需要恢復無關。GraphicsConfiguration
,
Component
,
IMAGE_OK
,
IMAGE_RESTORED
,
IMAGE_INCOMPATIBLE
public abstract boolean contentsLost()
validate
後呈現資料丟失,則返回 true
。在對圖像進行的任何系列呈現操作的結尾,應用程序應該調用此方法,以查看圖像是否需要驗證和重新呈現。
true
;否則返回 false
。public abstract ImageCapabilities getCapabilities()
VolatileImage
的功能的 ImageCapabilities
物件。public int getTransparency()
Transparency
中的 getTransparency
VolatileImage
的透明度。Transparency.OPAQUE
,
Transparency.BITMASK
,
Transparency.TRANSLUCENT
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。