アプリケーションに取り消し/やり直し機能を提供したいと考えています。
例として、次の一連の呼び出しについて考えてみましょう。
gr.Drawrectangle(pen, p1, p2);
gr.FillEllipse(brush, p1, dx, dy);
呼び出しをある種のリストに保存し、元に戻すことができるようにしたいと思います。これを行う良い方法は何ですか?
あなたが何を望んでいるのか完全には理解していませんが、アクションまたは機能のリストを作成できます。
List<Action<Graphics>> actions = new List<Action<Graphics>>();
actions.Add(gr => gr.Drawrectangle(pen, p1, p2));
actions.Add(gr => gr.FillEllipse(brush, p, x, y));
リフレクションを使用してメソッドのリストを取得できます: http://msdn.microsoft.com/en-us/library/4d848zkb.aspx
しかし、「元に戻す」ボタンについては、以前のビットマップを保持するために、ある種のキャッシュを使用する必要があると思います。最後の 10 回の移動 (ビットマップ) をメモリに格納し、次の移動を一時ファイルに格納できるとします。