画像を描くには、画像観察者が必要です。これまで私が理解していることから、BufferedImageは画像オブザーバーです。しかし、私の質問は、画像オブザーバーを何が定義し、それが何をするのですか?私はかなり混乱しています。
まず、ImageObserver
はインターフェースです。 docs によると:
画像の構築時に画像情報に関する通知を受信するための非同期更新インターフェース。
つまり、完全に作成する前に変更できる画像を使用するためのオブジェクト指向の方法です。メソッドimageUpdate(Image img, int infoflags, int x, int y, int width, int height)
は、画像が変更されるたびに呼び出されます。さらに変更があった場合はtrue
を返し、それ以外の場合はfalse
を返します。このメソッドは、サイズ、解像度、色などを強制するために使用できます。また、エラーをある程度制御できます(ERROR
フラグ)。詳細は this を参照してください。
オブザーバーは、画像に関する重要な情報も処理する場合があります。たとえば、画面に画像を描画していて、レンダリングが完了する前にそれを大きな画像に変更する場合、描画しているものを通知する方法が必要です。ディメンションが変更され(より多くのスペースを割り当て)、変更を処理する必要があること。その場合、ImageObserver
がasynchronousであることは非常に重要です。
ImageObserver
は、画像の読み込み状態の通知を処理するメソッドを持つインターフェースです。必要に応じてこれを再表示に使用できます。 JFrame
とApplet
はどちらもImageObserver
インターフェースを実装しています。
an画像の読み込みに関してユーザーに通知するため
ImageObserver
インターフェイス–ロードプロセスの監視を有効にして、ユーザーに通知し、ロードされたイメージをすぐに使用できるようにします。
画像を非同期でロードする–画像の準備ができたことを知る方法。
画像の準備ができました-getImage()
メソッドが返されます。画像について何かがわかる前に.
_imageUpdate(Image img, int infoflags, int x, int y, int width, int height)
_
注:_Java.awt.Component
_はImageObserver
を実装し、すべてのサブクラスも同様に実装します!
g.drawImage(imge, 0,0, this)
-これはImageObserver
インスタンスを指します。
imageUpdate()
–必要に応じてImageObserver
によって呼び出されます。明示的に呼び出さないでください!
false
を返します。true
を返します。_ImageObserver.ALLBITS = 32
_
さまざまな定数を組み合わせてinfoflags
引数を形成します。これは、すべての情報が利用可能かどうかを示します。
this と Oreillyの説明 を見てください。