1

Android アプリで、ユーザーが何かを描画できるシンプルなホワイトボードを作成しました。元に戻す機能を追加して、前のアクションに戻れるようにしたいと考えています。

私のTouch Startイベントでは、基本的に現在のキャンバスをに追加し、ArrayList同じ参照を避けるために新しいキャンバスを作成する次のコードを追加しました。

previousDrawing.add(this.canvas);
this.canvas = new Canvas(this.bitmap);

次に、私のundo方法で、次のコードを追加しました。

if (previousDrawing.size() > 0)
{
     // Remove last
    this.canvas = previousDrawing.remove(previousDrawing.size() - 1);
    this.canvas.setBitmap(this.bitmap);
}

まったく機能しません。this.canvas.drawPath(this.path, this.paint);つまり、以前のキャンバスを保存して復元することはできませんが、キャンバスに描画できます。

それをするのを手伝ってくれませんか?

前もって感謝します。

EDIT: 私も使用しようとしましたsaveLayer method。しかし、保存すると、キャンバスに描画できなくなります。これは正常な動作ですか?

4

2 に答える 2

3

drawBitmap代わりに試してくださいsetBitmap

this.canvas.drawBitmap(this.bitmap, 0, 0, null);

編集

if (previousDrawing.size() > 0)
{
     // Remove last
    this.bitmap = previousDrawing.get(previousDrawing.size() - 1);
    this.canvas.drawBitmap(this.bitmap, 0, 0, null);
    previousDrawing.remove(previousDrawing.size() - 1);
}

参照リンク

于 2013-02-06T15:59:16.557 に答える