0

我正在开发一个非常基本的形状绘图 GUI 程序。我一切正常(绘制/移动/选择),现在正在处理重做/撤消功能。重做/撤消都适用于绘图,但我在移动时遇到了麻烦,我认为这应该很简单。当我的形状移动时,它们会经历以下过程:

         for(IShape i : selectedList){
            undoStack.push(i);
            drawInstanceTwo.shapeList.remove(i);
            move.updateShape(i, start, end);
            drawInstanceTwo.shapeList.push(i, canvas, state);   
    }

这里的想法是将形状当前形式(点 x/y)推送到 undoStack 上,这样如果我想撤消移动,我可以在按下撤消按钮时将其从堆栈中弹出。Move.updateShape 更改形状的点,然后将其推送到我的整个 shapeList 以重新绘制 GUI。我遇到的问题是稍后在我的撤消方法中我调用:

priorShape = undoStack.pop();

并在点已更改后返回形状。为什么是这样?我已经将它推入堆栈,就像在编辑点之前一样,那么为什么它会在堆栈中发生变化?感谢您的任何建议!

4

0 回答 0