- PR -

描画位置をずらす

投稿者投稿内容
さくらば
大ベテラン
会議室デビュー日: 2002/11/12
投稿数: 145
投稿日時: 2003-06-24 23:14
こんにちは、さくらばです。

引用:

かずくんさんの書き込み (2003-06-24 15:55) より:
今回の件を追う段階で、repaint()を発行してからpaint()が呼ばれるまでに、
指定した領域が消去されることが分かりました。

私が作成しているアプリはアニメーションを行っていないため、Imageを消去する必要がないのですが、Imageを消去することなく、paint()メソッドを呼ばせることは可能でしょうか?



repaint をコールすると、update が呼ばれ、最後に paint が呼ばれます。Canvas
クラスの update メソッドは次のようになっており、領域クリアが行われています。

コード:
    public void update(Graphics g) {
        g.clearRect(0, 0, width, height);
        paint(g);
    }



これを行わせないようにするには

1. update メソッドをオーバライドして、単に paint をコールするだけにする
2. Canvas などヘビーウェイトなコンポーネントを使用せずに、Component を
派生させたライトウェイトコンポーネントにする
3. Swing にする

のどれかだと思います。

# 個人的には 3 -> 2 -> 1 の順でお勧めします。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2003-07-03 18:22
田村です。回答ありがとうございます。

さくらばさん
引用:

1. update メソッドをオーバライドして、単に paint をコールするだけにする
2. Canvas などヘビーウェイトなコンポーネントを使用せずに、Component を
派生させたライトウェイトコンポーネントにする
3. Swing にする

のどれかだと思います。

# 個人的には 3 -> 2 -> 1 の順でお勧めします。




update()メソッドを書きかえるだけで対処できることから、
1.の方法を使用して、結果、所望の挙動を得ることができました。

スキルアップ/キャリアアップ(JOB@IT)