2-2-8補足: ダブルバッファの利用による描画内容の復活


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


 /** オフスクリーン */
    protected BufferedImage offScreen;

 /** オフスクリーンの書き込み用のグラフィックス */
    protected Graphics2D offGraphics;

 /** 描画メソッド */
    public void paint( Graphics g ) {
        if( offScreen == null | offGraphics == null ) {
            Dimension newSize = getSize();
            offScreen
               = new BufferedImage( newSize.width, newSize.height,
                                    BufferedImage.TYPE_INT_RGB );
            offGraphics = offScreen.createGraphics();
            WritableRaster raster = offScreen.getRaster();
            int[] data = { 255, 255, 255 };
            for( int j=0; j

・ サンプルのソース