D douhao Unregistered / Unconfirmed GUEST, unregistred user! 2001-04-06 #1 怎麽做撤消/重做? 是把程序运行后的每个动作都压栈? 怎么压?定义很多结构代表很多动作压进去? 实在很困惑!盼望高手指教!:)
L LanFairy Unregistered / Unconfirmed GUEST, unregistred user! 2001-04-06 #3 我以前做图形是用自定义结构,将所画图形用自定义Record存入链表或流中,以链表数据来 刷新图新,撤消/重画只要给你的Record类型加一个标志位就行
吕 吕雪松 Unregistered / Unconfirmed GUEST, unregistred user! 2001-04-06 #4 如果是图像,则可以简单地用一个图象链表来记录历史,另外再附带记录每个操作。 图形的可能会复杂一些。
卷 卷起千堆雪tyn Unregistered / Unconfirmed GUEST, unregistred user! 2001-04-28 #6 你可以自己定义一个记录类型的变量 : type TURType=(urAll,urPart); //图象操作分类:全图,局部 type TURRecord=record urKind :TURType; urRegion :array of TPoint; //图象局部操作图象改变部分的坐标 : LeftTop,RightBottom end; 每次图象的改变都要记录下来,包括:1.图象的全局改变还是图象的局部改变,之所以 要分类,是为了减少内存的消耗;2.每次图象改变时的左上和右下角点的坐标, 这是为了在 undo 和 redo 时能够准确恢复位图。 另:如果你的内存可怜,你也可以将所有的操作保存在硬盘上
你可以自己定义一个记录类型的变量 : type TURType=(urAll,urPart); //图象操作分类:全图,局部 type TURRecord=record urKind :TURType; urRegion :array of TPoint; //图象局部操作图象改变部分的坐标 : LeftTop,RightBottom end; 每次图象的改变都要记录下来,包括:1.图象的全局改变还是图象的局部改变,之所以 要分类,是为了减少内存的消耗;2.每次图象改变时的左上和右下角点的坐标, 这是为了在 undo 和 redo 时能够准确恢复位图。 另:如果你的内存可怜,你也可以将所有的操作保存在硬盘上
M mikedeakins Unregistered / Unconfirmed GUEST, unregistred user! 2001-04-29 #7 想省事就把原始图像保存下来。 如果只是保存操作,相应的动作难度挺大。假如在图像上画了一条黑线, 那就要把黑线坐标保存,还有被覆盖的图像信息。太麻烦。