我正在开发一个扭曲图像的Android应用程序。我正在使用opengl翻译和缩放功能来扭曲图像。图像扭曲很好。现在我想实现撤消功能。但是无法实现功能。任何一个可以帮助如何在opengl中实现撤消功能。任何建议或代码都会有所帮助。 提前致谢 。
答案 0 :(得分:2)
我怀疑命令模式不适合你的情况。这是基于我的假设,即使你知道应用了什么样的失真,也不容易扭转图像失真。
相反,您可能需要在应用失真之前将图像推到堆栈上。然后,撤消实现将用堆栈上的图像替换当前图像。这将导致由重做和撤消组合产生的潜在有趣问题。
您可以优化存储命令对象,以便进行易于更改的更改,并为不易反转的更改存储图像。
答案 1 :(得分:0)
让我们看一下简单的绘画程序。该过程直接适用于您的OpenGL应用程序。用户从x1,y1到x2,y2绘制一条线。该命令可以表示如下:
command = DrawLine
data = x1, y1, x2, y2
你可能需要至少两个类来撤销数据,但它们很小并且很容易实现。当用户想要撤消时,只需将顶部对象从Undo堆栈中弹出,查看它,然后执行相关的撤消操作(特定于每种类型的命令)。或者,您甚至可以在每个命令对象本身中包含撤消操作。然后在Redo堆栈上按下撤消命令。
这应该足以让你入门。 HTH