web-dev-qa-db-ja.com

ImageObserverとは何ですか?

画像を描くには、画像観察者が必要です。これまで私が理解していることから、BufferedImageは画像オブザーバーです。しかし、私の質問は、画像オブザーバーを何が定義し、それが何をするのですか?私はかなり混乱しています。

14
Troubleshoot

まず、ImageObserverインターフェースです。 docs によると:

画像の構築時に画像情報に関する通知を受信するための非同期更新インターフェース。

つまり、完全に作成する前に変更できる画像を使用するためのオブジェクト指向の方法です。メソッドimageUpdate(Image img, int infoflags, int x, int y, int width, int height)は、画像が変更されるたびに呼び出されます。さらに変更があった場合はtrueを返し、それ以外の場合はfalseを返します。このメソッドは、サイズ、解像度、色などを強制するために使用できます。また、エラーをある程度制御できます(ERRORフラグ)。詳細は this を参照してください。

オブザーバーは、画像に関する重要な情報も処理する場合があります。たとえば、画面に画像を描画していて、レンダリングが完了する前にそれを大きな画像に変更する場合、描画しているものを通知する方法が必要です。ディメンションが変更され(より多くのスペースを割り当て)、変更を処理する必要があること。その場合、ImageObserverasynchronousであることは非常に重要です。

13
Mateusz

ImageObserverは、画像の読み込み状態の通知を処理するメソッドを持つインターフェースです。必要に応じてこれを再表示に使用できます。 JFrameAppletはどちらも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引数を形成します。これは、すべての情報が利用可能かどうかを示します。

    info flag table

thisOreillyの説明 を見てください。

10
cMinor