如何在栅格绘图程序中实现撤销功能?

3
你正在开发一个类似于画图程序的软件,希望能够撤销和重做笔划。你该如何实现这个功能?
请考虑速度和内存优化。

没有,只是在众包寻求想法。我提出了我的答案。还有其他的想法吗? - Nick Retallack
2个回答

2
使用四叉树记录画布上发生变化的部分的先前状态。在撤销操作时,从四叉树中替换画布状态。

0

创建画布的备份副本。选择完全包围笔划的矩形补丁。将该补丁中包含的位图保存在新版本和备份中。现在,您可以将这些更改复制到撤消或重做笔划中。

可能会使用大量内存。


将长笔画分解为一系列短笔画可以大大减少所需的内存。想象一下绘制“U”形并沿着U形路径使用一组框而不是一个覆盖整个“U”的边界框。 - MadCoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接