ダブルバッファの利用(2)

ダブルバッファを用いて、描画内容の復活を行うテクニックを紹介しましょう。

ダブルバッファを応用すると、 ウィンドウ画面上でダメージを受けた絵の内容も復活させることが可能になります。 たとえば、マウスを使って絵を描くようなアプリケーションを考えてみましょう。 画面に描かれる絵の内容はユーザーの操作によって変わっていきます。 それを復活させるためには、どこかに絵の内容を保存しておく必要があります。 それにダブルバッファを使います。 絵を表示する際に「裏の画面」にも同時に書き込む処理を update()メソッドで実行し、 絵がダメージを受けた時に「裏の画面」を paint()メソッドによって復活させれば うまくいきます。


   /**  起動時、画面の復活の時に呼び出される */

    public void paint( Graphics g ) {
         
         if( offScreen == null ) {

             offScreen = createImage( getSize().width,
                                      getSize().height );
             offGraphics = offScreen.getGraphics();
             offGraphics.setColor( Color.white );
             offGraphics.fillRect( 0, 0,
                     getSize().width, getSize().height );
             offGraphics.setColor( Color.black );
             g.drawImage( offScreen, 0, 0, this );
         }
         else {

             g.drawImage( offScreen, 0, 0, this );
         }
    }

   /** アプレットにグラフィックを描く。*/

    public void update( Graphics g ) {

         g.drawLine( x1, y1, x2, y2 );           // 線を描く
         offGraphics.drawLine( x1, y1, x2, y2 ); // 線を描く
         x1 = x2;
         y1 = y2;
    }

サンプルのソース

関連するクラスの解説


補足の目次  講義全体の目次  大学のホームページ