procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Canvas.MoveTo(StartX, StratY); //StartX, StratY为MouseDown记录的坐标值 
  Canvas.LineTo(X, Y);
end;可是当窗体最小化或其它窗外经过上面时,画的这些线都被清除了,请问为什么?

解决方案 »

  1.   

    要在OnPaint事件里绘图才不会出现这种情况..
      

  2.   

    正常正常。你是在窗体上图的吧。
    你在IMAGE里画就没事了。
    如果你在窗体上画,必须要处理OnPaint事件
      

  3.   

    在Image里画也是一样的。
    如果在窗体上画那如何在OnPaint事件呢?
      

  4.   

    当然消失了。。你都没有在窗体刷新后再次画他们,当然就不在了。
    用两个全局量保存线的头尾点坐标。在form 的OnPaint 事件中再次画线。
    也就是你还需要在MouseUp里记录下线的第二个点坐标。然后在 OnPaint 里再次画线
      

  5.   

    类似:
    procedure TForm1.FormPaint(Sender: TObject);
    begin
      Canvas.Pen.Color:=clBlue;
      Canvas.Ellipse(10,10,50,50);
    end;
      

  6.   

    TO:SydPink(希望不再敲键盘!)  这样是可以保存最后画的,可如果画了许多直线,难道都保存起来?好像也不太可行。
      

  7.   

    在image 里划线就不会这样的!
      

  8.   

    Timage不会,所以我用它做地图控件。
      

  9.   

    用TList保存f协作,在OnPaint重画,侯捷的一本书讲的很详细,不过是VC:)