显然,存储更改历史的数组需要大量内存......这就是我的应用程序工作的方式,但似乎有一种更聪明的方法可以做到这一点。
ArrayList<Photo> photoHistory = new ArrayList<>();
photoHistory.add(originalPhoto);
photoHistory.add(change1);
photoHistory.add(change2);
// bad implementation - lots of memory
也许只存储一个原始的和当前的 View 模型并保留所使用的方法/过滤器的日志?然后当用户点击“撤消”时,它会取所做的更改总数并再次运行所有更改减去一?这似乎也非常低效。
我想我只是在寻找有关如何实现软件应用程序的一般“撤消”功能的建议。
最佳答案
以下是 GIMP 如何实现它的提示:
Source
因此,要尽可能做到最佳,您必须根据要撤消的操作执行不同的操作。显示或隐藏图层可以用微不足道的空间表示,但过滤整个图像可能需要存储整个图像的另一个副本。但是,如果您只过滤图像的一部分(或在图像的一小部分中绘制),也许您只需要存储那部分图像。
关于java - 在照片编辑应用程序中实现 "undo"功能的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43215908/