在图形应用程序中撤消/重做

时间:2012-10-26 07:18:54

标签: c# winforms

我想在我的应用程序中提供撤消/重做功能。

举个例子,考虑这一系列的调用:

gr.Drawrectangle(pen, p1, p2);
gr.FillEllipse(brush, p1, dx, dy);

我想将调用存储在某种列表中并能够撤消它们。有什么好办法呢?

2 个答案:

答案 0 :(得分:3)

我完全不明白你想要什么,但可以创建一个动作或功能列表。

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));

答案 1 :(得分:2)

您可以使用Reflection获取方法列表:http://msdn.microsoft.com/en-us/library/4d848zkb.aspx

但是对于'撤消'按钮我认为,你应该使用某种缓存来保留以前的位图。让我们说最后10个移动(位图)可以放在内存中,然后移动到临时文件中。