|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjava.awt.Image
java.awt.image.VolatileImage
public abstract class VolatileImage
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());
情報は潜在的に ImageProducer から得られるため、このクラスは、非同期通知に ImageObserver パラメータを使用するメソッドを含む Image クラスからサブクラス化してください。この 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()
この VolatileImage に描画するために使用できる Graphics2D を生成します。 |
void |
flush()
このイメージが現在使用しているシステムリソースを解放します。 |
abstract ImageCapabilities |
getCapabilities()
この VolatileImage の固有の機能を照会できる ImageCapabilities オブジェクトを返します。 |
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 |
| フィールドの詳細 |
|---|
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 表現BufferedImagepublic abstract int getWidth()
VolatileImage の幅を返します。
VolatileImage の幅public abstract int getHeight()
VolatileImage の高さを返します。
VolatileImage の高さpublic ImageProducer getSource()
getSource のような操作では、ピクセル読み込みに重点が置かれない操作よりもパフォーマンスが落ちます。イメージから読み込まれるピクセル値は、取得された時点の内容だけを反映したものです。このメソッドは要求された時点のイメージのスナップショットを取得します。返される ImageProducer オブジェクトは静的なスナップショットイメージであり、オリジナルの VolatileImage ではありません。getSource() を呼び出すと、getSnapshot().getSource() を呼び出した場合と同じ結果が得られます。
Image 内の getSourceBufferedImage 表現のピクセル生成に使用可能な ImageProducerImageProducer,
getSnapshot()public void flush()
VolatileImage オブジェクトが生成される時には、イメージサポートのため、ビデオメモリ (VRAM) などの制限されたシステムリソースが割り当てられます。VolatileImage オブジェクトが使用されなくなった場合にはガベージコレクトされ、割り当てられたシステムリソースが解放されますが、このプロセスの実行タイミングは一定ではありません。たとえばウィンドウサイズを変更すると、変更のたびにバックバッファが再生成されますが、このように多数の VolatileImage オブジェクトを生成するアプリケーションでは、使用されなくなったオブジェクトがシステム上に残っているという理由だけで、新しい VolatileImage オブジェクトの生成に最適なリソースが不足する可能性があります。この場合、新しい VolatileImage オブジェクトが生成されても、高速なメモリに生成された場合に比べてパフォーマンスは低下します。
このフラッシュメソッドを呼び出すことによって、無効になった VolatileImage オブジェクトに占有されているリソースの状態をアプリケーションから制御しやすくなります。
このメソッドを実行するとイメージの内容が失われ、contentsLost() の呼び出しで true が返されます。イメージ再使用の前に検証する必要があります。
Image 内の flushcontentsLost(),
validate(java.awt.GraphicsConfiguration)public Graphics getGraphics()
Graphics2D を返しますが、ここでは下位互換のために提供されます。Graphics2D を返すように宣言されているため、createGraphics の方が便利です。
Image 内の getGraphicsGraphics2DGraphics,
Component.createImage(int, int)public abstract Graphics2D createGraphics()
VolatileImage に描画するために使用できる Graphics2D を生成します。
Graphics2Dpublic abstract int validate(GraphicsConfiguration gc)
validate 呼び出し以降にイメージの描画表面が失われている場合、その描画表面を復元します。さらにこのイメージを指定された GraphicsConfiguration パラメータに対して検証し、このイメージから GraphicsConfiguration への操作が互換性を持つかどうかを確認します。互換性を持たない組み合わせが考えられるのは、VolatileImage オブジェクトがあるグラフィックデバイス上で生成され、別のグラフィックデバイス上で描画に使用されるような場合です。VolatileImage オブジェクトはデバイス固有のものとなる傾向が強いので、このような場合では意図したとおりに動作しない可能性があり、この validate 呼び出しの戻り値でこの不整合が通知されます。gc に対する値が null の場合、あるいは不正な場合は、validate から不正な値が返され、あとで描画についての問題が発生する可能性があります。
gc - このイメージの GraphicsConfiguration オブジェクトが検証されます。gc が null の場合、検証メソッドの互換テストがスキップされます。
IMAGE_OKIMAGE_RESTORED。イメージの復元を行った場合は、内容に影響しているため、イメージの再描画が必要な可能性がある。validate メソッドに渡された GraphicsConfiguration オブジェクトと互換性がない場合は IMAGE_INCOMPATIBLE。この場合、この GraphicsConfiguration で正常に使用可能なイメージを得るため、新しい Component または GraphicsConfiguration を使用して、イメージの再生成が必要になる。互換性のないイメージについては、復元が必要かどうかのチェックは実行されず、IMAGE_INCOMPATIBLE が戻されたあともイメージの状態は変更されない。イメージの復元が必要かどうかはこの戻り値では判断できないGraphicsConfiguration,
Component,
IMAGE_OK,
IMAGE_RESTORED,
IMAGE_INCOMPATIBLEpublic abstract boolean contentsLost()
validate 呼び出し以降に描画データが失われている場合は true。このメソッドはイメージに関連する一連の描画処理の最後に、アプリケーションから呼び出され、イメージの検証、再描画が必要かどうかを確認します。
true、不要な場合は falsepublic abstract ImageCapabilities getCapabilities()
VolatileImage の機能についての情報を持つ ImageCapabilities オブジェクトpublic int getTransparency()
Transparency 内の getTransparencyVolatileImage の透明度Transparency.OPAQUE,
Transparency.BITMASK,
Transparency.TRANSLUCENT
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。