2010-08-13 77 views
1

我试图通过在将图像发送到数组或某物之前保存图像来创建图像框的撤消功能。我试着用List,但是我一直得到相同的图像,Image List的大小对于我的海豚来说很小。保存还原数据的最佳做法是什么?在每次着色之前如何将图像存储到内存中?谢谢 !撤消对图像集合的更改

回答

2

您必须每次克隆图像内容。我认为你总是将图像的参考添加到列表中。

如果你想得到撤消功能,正确地看看Command Pattern

另一种方法是计算原始图像和操作后图像的差异,然后存储差异以节省内存。

+0

谢谢。每次我保存并且工作良好时,我创建了一个位图实例。我将尝试寻找一种更优雅的方式来实现这一点,并消除5位图的限制性节省。 – andySF 2010-08-13 13:15:01

1

许多涂料将发生在相同的图像。只要部分控件需要重新绘制,Windows就会触发Paint事件。就像你在PB上拖动另一个窗口一样。或者最小化并恢复表单。

换句话说,Paint并不会告诉您图像已更改。您需要从PictureBox派生自己的类并重写Image属性。当图像改变时,setter将被调用。

+0

保存受bool值限制,因此只在需要时才进行保存。 – andySF 2010-08-13 12:58:37