![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.1ベストアンサー
- 回答日時:
UNDO処理は、メモリを使ってゴリゴリとコーディングするしかありません。
基本は「何かを書き換える時は、書き換え前の状態をメモリに退避しておいてから、書き換えを行う。UNDOで元に戻す時は、メモリに退避した物を元の場所へ書き戻す」です。
具体的には、以下のようにコーディングする事になります。
・通常の状態では
1.ユーザーがキャンパスを書き換えるアクションを行おうとした場合は、書き換え前のキャンパスの全内容をメモリに退避する。
2.その後、ユーザーが行ったアクションをキャンパスに反映させる。
3.UNDOが可能な状態にする。
・UNDOを行われたら
1.退避しておいたメモリ内容をキャンパスに戻す。
2.キャンパスを元に戻す以外の「つじつま合わせ」もする。
3.UNDO出来ない状態にする。
何を何処にどう退避させるかは、それぞれのソフトの作り方次第なので、これと言った決まりはありません(つまり「何を何処にどう退避させれば良いの?」と言う質問には回答出来ません)
なお、通常の状態でメモリへ退避するのは、毎回ではなく「ペンツールから塗り潰しツールに変えた後とか、違うツールで描画しようとした瞬間」とか「ユーザーが明示的にメモリ退避を行った(メニューに「メモリへ退避」とかの項目を設置しておく)時」の方が良いです。UNDOで1ピクセルだけとか、1アクション分だけしか戻らないんだったら意味が無いので。
No.3
- 回答日時:
> draw系とpaint系では処理が違うのですか?
draw系では絵そのものではなく、操作、たとえば
"太さ3の赤いペンで(0,0)から(20,40)に線を引く"
なんてのを順に記憶しておきます。
ですから最後の操作を削除し、最初から操作の列を再現することでUNDOが実現できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- Excel(エクセル) 1つのファイルを3つのフォルダにファイル名を【明日の日付】にして、コピーをしたい 2 2022/12/21 17:43
- C言語・C++・C# PCの性能とビルド時間 4 2022/11/14 19:23
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- C言語・C++・C# visual studio 2019 についての質問です 1 2022/09/21 09:58
- その他(教育・科学・学問) クイズ! 嘘つきクイズ問題を作っています。辻褄があっているか、確認してください。 エイプリルフールに 3 2022/03/23 19:48
- 大学・短大 参考文献内の参考文献の扱いについて 2 2022/11/29 17:00
- デスクトップパソコン 新しいPCを購入する際、店舗でどういう質問をしたらいいでしょうか? 6 2023/06/05 21:15
- 画像編集・動画編集・音楽編集 【急】【Zbrush】3DCG初心者です。ノートPCでのZbrush動作環境につきまして 1 2023/08/19 17:38
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
メモリのセグメント違反の解決...
-
動的メモリとexit(C言語)
-
【C言語】再帰が時間がかかる...
-
mallocとfree
-
VC++におけるメモリ使用量について
-
メモリ不足
-
C言語:関数のメモリ上でのサイ...
-
Apacheでバーチャルホストの最...
-
パソコンを閉じる時いつも休止...
-
malloc関数の使い終わった後の...
-
メモリの消費量について
-
バッチファイルでの実行EXEのメ...
-
ExcelのVBAでメモリ解放できない
-
「memcpy」と「strcpy」について
-
Bitmapを重ね合わせる方法
-
エクセル キャッシュメモリー...
-
仮想メモリの増やし方
-
メモリの解放の仕方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
VBAの配列サイズとメモリに関して
-
エクセルのメモリ使用状況/Appl...
-
sil_rew_memのメモリアクセスに...
-
メモリのセグメント違反の解決...
-
EXCEL-VBAにてADOのレコードセ...
-
C言語における再帰呼び出しの...
-
メモリが不足しています(VBA)
-
【C言語】再帰が時間がかかる...
-
メモリアロケーション異常の発...
-
エクセル キャッシュメモリー...
-
大容量のメモリ確保をスワップ...
-
ファイルマッピング関数で失敗
-
バッチファイルでの実行EXEのメ...
-
動的メモリとexit(C言語)
-
メモリ不足
-
「ヒープサイズの設定」て何?
-
「memcpy」と「strcpy」について
-
LoadLibraryしたらFreeLibrary
-
C言語初心者です。debug assert...
おすすめ情報