2015/06/17(水) [n年前の日記]
#3 [prog] C#の勉強中
動作確認中、Undo が無いのが辛くて仕方なかったので、ひとまず直前の状態に戻すだけのUndo機能を追加してから、複数回 Undo できる仕様に改良。
どうやって実装するのか悩んだけど、ググってみたら2つのパターンがあるらしい。一つは、各処理をコマンドにして、どんなコマンドを今まで実行してきたか記録していく方法。もう一つは、その瞬間瞬間の状態をガバッと丸ごと記録していく方法。前者はおそらく Commandパターン、後者はもしかすると Mementoパターンと呼ばれるのかもしれないけどよく分からない。ちゃんと理解してません。
とりあえず今回は、各画像の表示位置その他を記録しておけば良さそうなので、マウスクリックした瞬間にその時の画像群の表示位置や選択状態をごっそりどこかに記録して、Undo が呼ばれたらそこから書き戻す感じに。安直だけど一応それらしく動いてるので良しとします。
延々と作業してると延々とメモリを食っていく仕様なのがヤバそうだけど、どうせ今時のPCはGByte単位でメモリ積んでるし…。
どうやって実装するのか悩んだけど、ググってみたら2つのパターンがあるらしい。一つは、各処理をコマンドにして、どんなコマンドを今まで実行してきたか記録していく方法。もう一つは、その瞬間瞬間の状態をガバッと丸ごと記録していく方法。前者はおそらく Commandパターン、後者はもしかすると Mementoパターンと呼ばれるのかもしれないけどよく分からない。ちゃんと理解してません。
とりあえず今回は、各画像の表示位置その他を記録しておけば良さそうなので、マウスクリックした瞬間にその時の画像群の表示位置や選択状態をごっそりどこかに記録して、Undo が呼ばれたらそこから書き戻す感じに。安直だけど一応それらしく動いてるので良しとします。
延々と作業してると延々とメモリを食っていく仕様なのがヤバそうだけど、どうせ今時のPCはGByte単位でメモリ積んでるし…。
[ ツッコむ ]
以上です。