图形图象 (100分)

  • 主题发起人 主题发起人 douhao
  • 开始时间 开始时间
D

douhao

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