代码如下:
var
    MyPen:TPen;
begin
    MyPen:=TPen.Create();
    Canvas.Pen.Color:=0;
    MyPen:=Canvas.Pen;
    ShowMessage(IntToStr(MyPen.Color));
    Canvas.Pen.Color:=255;
    ShowMessage(IntToStr(MyPen.Color));
end;为何我在更改了Canvas.Pen.Color的值后,MyPen.Color的值也会随着更改?我要Canvas.Pen.Color值更改后,MyPen.Color值不变,可以吗?如何做?还请高手指点。

解决方案 »

  1.   

    因为你写了这么一句
    MyPen:=Canvas.Pen;
    这时,MyPen和Canvas.Pen就是同一个对象,你要想做到不变,就别写这句。
    另外,个人认为,在Delphi中,没有必要自己创建Pen。
      

  2.   

    何必自己创建TPen,我历来都是用Canvas画图
      

  3.   

    我正在写一个矢量图形处理软件,要每一类对象(如TLine,TRect等)都记住自己的Pen和Brush,以便在画图形的可以重现当时设定的状态。所以我要创建一个Pen,若不写MyPen:=Canvas.Pen;如何做才能达到我的目的。谢谢chechy的关注,请继续。
      

  4.   

    只能用Assign方法,对其中内容进行Copy。
    MyPen.Assign(Canvas.Pen);
      

  5.   

    十分感谢chechy的帮助,谢谢。