うるおいらんど

アプリ開発やサイト制作のメモとか。

ペイントアプリのredo/undoでのジレンマ。

魚ライン
魚ライン

今回はただの独り言だったり。

redo/undoが上手く動作するようになりました。

喜びたいところなのですが、まだ問題がありました。

問題はメモリへの圧迫、といったところですね。

 

私が今回書いたコードでは、線をひとつずつ保存して、undoボタンを押したら一番最後の線を消し、最初から再描画し直すという仕組みになっています。(1)

もうひとつ一度は試したけれどやめた方法があります。線を描いた直後に画像を保存し、undoボタンを押したらその画像に戻す、という方法です。(2)

 

前者の方法では、スケッチをしている際のメモリへの圧迫は少ないです。後者では線を書き足していけばいくだけメモリを圧迫します。

 

一見私のコードが正解だったようにみえましたが、結果はムムムといった感じです。

1の方法で実際に絵を描いてみました。線が増えれば増えるほど、undo時に再描画にかかる時間はたくさんかかります。メモリへの負荷がかかるのが再描画時のみ。普通に書いている場合はそこまで負荷はかかっていません。

しかし線が大量にある場合にundoボタンを押すと処理にめちゃくちゃ時間がかかります。連続で押したときはそのままサヨナラです。アプリ自体が落ちてしまいます。

 

2の方法であれば線の数によってどんどん画像を保存していくのでメモリはどんどん負荷がかかっていきます。

 

しかし実際に使えるのは2の方法な気がします。

すべての線を保存して、どこまでもundoできるようにしよう!というのがまぁ無理な話なんでしょうね。

いろいろなペイントアプリがありますが、やはりundoの回数には限度があります。そういった事情からなのかーといった感じ。

 

めちゃくちゃ悩んでやっと1の方法のundo機能をつけましたが、やはり2の方法にしたほうが良さそうですね。メモリへの負荷を考えて1の方法にしたはずなのになぁ(笑)

アプリが落ちてしまってはどうしようもないですしね。頑張って書き直します・・・・。

 

それではでは

 

魚ライン
モッピー!お金がたまるポイントサイト
魚ライン

アプリ開発の記事一覧を見る

コメント

コメントは認証制です。詳しくは下記の注意をお読みください。

コメントを残す

コメント時の注意

「Twitter」「Facebook」「Google+」「WordPress」のいずれかのアカウントをお持ちの方は各アカウントと連携することでコメントできます。 コメントしたことはSNSに流れませんので、アカウントをお持ちの方はこちらの方法でコメントを投稿して下さると嬉しいです。 アカウントをお持ちでない方はメールアドレスで投稿することができます。 初回コメント時は承認後に表示されます。

魚ライン 魚ライン