C# 撤消对图像集合的更改

C# 撤消对图像集合的更改,c#,C#,我正试图通过在绘制之前将图像保存到数组或其他东西中,来创建图片框的撤消功能。我试着用列表,但我总是得到相同的图像,图像列表的大小对我的海豚来说太小了。保存撤消数据的最佳实践是什么?如何在每次绘制之前将图像存储到内存中?谢谢大家! 在同一张图片上会出现许多绘画。只要控件的一部分需要重新绘制,Windows就会触发绘制事件。就像在PB上拖动另一个窗口一样。或者最小化并恢复表单 换言之,Paint不会告诉您图像已更改。您需要从PictureBox派生自己的类并重写Image属性。更改图像时将调用set

我正试图通过在绘制之前将图像保存到数组或其他东西中,来创建图片框的撤消功能。我试着用列表,但我总是得到相同的图像,图像列表的大小对我的海豚来说太小了。保存撤消数据的最佳实践是什么?如何在每次绘制之前将图像存储到内存中?谢谢大家!

在同一张图片上会出现许多绘画。只要控件的一部分需要重新绘制,Windows就会触发绘制事件。就像在PB上拖动另一个窗口一样。或者最小化并恢复表单


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

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

如果要正确完成撤消功能,请查看


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

保存以布尔值为条件,因此在需要时即可完成。谢谢。每次保存时我都创建了一个位图实例,效果很好。我将尝试寻找一种更优雅的方法来实现这一点,并消除5个位图的限制性节省。