如何在光栅绘图程序中实现撤消?

时间:2009-08-28 03:37:42

标签: drawing undo-redo raster

你正在制作像Paint这样的绘图程序。您希望能够撤消/重做画笔笔划。你会如何实现这个?

优化速度和记忆。

2 个答案:

答案 0 :(得分:2)

使用quadtree记录更改的画布部分的先前状态。 在撤消时,从四叉树中替换画布状态。

答案 1 :(得分:0)

创建画布的备份副本。选择一个完全围绕画笔描边的矩形贴片。在新版本和备份中保存该修补程序中包含的位图。您现在可以通过blit这些更改来撤消或重做笔划。

可能会占用大量内存。