アンドゥ

アンドゥ機能が搭載できた。

鳳雛の時は差分をビットマップで保存してたけど、今回はビットマップ1枚とそこからの筆跡データの記録から再現する方式にしてみた。

つまり、30回アンドゥ出来るとして、1回アンドゥボタンを押すと、まず元ビットマップで完全上書き、その後過去の筆跡から29回分を表示する。もう1回アンドゥボタンを押すと同じ手順で28回分。

メリットはメモリが節約出来る事。ビットマップと違って斜めの線だからといって容量が膨らむこともない。回数を増やしても描く処理は同じで遅くならない。

デメリットは、筆跡の再描画処理が重たかったり、筆跡の記録数が多いとアンドゥ処理に時間がかかる事。アンドゥの最大数が多いほど重たい。あとはアンドゥの最大数を超えると、筆跡ログの先頭を元ビットマップに書きこんでから捨てる処理が要る。

リドゥも当然できるけど、アンドゥの途中で何か描く(タッチしてしまう)と、それ以後のリドゥができなくなる。これは鳳雛でもあった問題点。ログが枝分かれする様にすれば対応出来そうだけど、操作や内部処理が複雑になって、結局いい感じの仕組みが思いつかなかった。

次は内部処理のDIB化の予定。

BitmapからgetPixelsでint配列が取り出せるのは知ってたけど、そのつどsetPixelsで戻すのは気持ち悪いと思ってたけど、int配列を直接drawBitmapで表示出来る事がわかった。これなら常時int配列でいいから高速化出来そう。

これが上手くいくとレイヤー的な事も出来る。今の状態だと色変更処理いれてもまともに塗れないけど、ペンを離すまで同じ濃度で塗りつぶせれば、手書きブログ的な塗り方なら出来るようになるはず。

あとはちゃんとした消しゴム処理も。今の消しゴムは白で塗ってるだけだから、背景が見えるようになったりはしない。

速度の問題があるから何でもかんでもはできないけど、何かしら特徴的というか、笑いの取れる機能を盛り込んでおきたい。

posted by unaunagi at 2012/01/05 02:57 | Comment(0) | TrackBack(0) | デジタル>Android | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。