如何将Panel或From上自己画的形状保存成图片
谢谢!

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Self.PaintBox1.Canvas.MoveTo(50,30);
      Self.PaintBox1.Canvas.LineTo(200,200);
      Self.Image1.Canvas.CopyRect(Image1.Canvas.ClipRect, Self.PaintBox1.Canvas, Self.PaintBox1.Canvas.ClipRect);
      Self.Image1.Picture.SaveToFile('c:\result.bmp');
    end;
      

  2.   

    谢谢!
    我没表达明白我的意思
    我已经在panel放了TShape控件,并对控件的属性及颜色进行了设置
    我想通过电击按钮将Panel及其上面的所有TShape形状保存在一张BMP图像上
      

  3.   

    兄弟,你先在Panel上放一个PaintBox,然后再放那些TShape控件,然后,用上面代码的最后两句即可。
    如果你不想让Image显示在界面上,可以设置Image到窗体边界以外,让用户看不到
      

  4.   

    设置 PaintBox.Align := alClient;
    设置 Self.Image1.Left := Self.Width;
    设置 Self.AutoScroll := False;
      

  5.   

    还需设置:  Self.Image1.Width := Self.Panel1.Width;
      Self.Image1.Height := Self.Panel1.Height;
    能明白我的意思吗?等你反馈
      

  6.   

    //把任意TWinControl上的内容(包括控件)保存成Bmp
    procedure PaintCtrlToBmp(Ctrl: TWinControl; Bmp: TBitmap);
    var
      cCanvas: TControlCanvas;
    begin
      Bmp.Width := Ctrl.Width;
      Bmp.Height := Ctrl.Height;  cCanvas := TControlCanvas.Create;
      try
        cCanvas.Control := Ctrl;
        Bmp.Canvas.CopyRect(Rect(0, 0, Bmp.Width, Bmp.Height), cCanvas, Ctrl.ClientRect);
      finally
        cCanvas.Free;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      B: TBitmap;
    begin
      B := TBitmap.Create;
      try
        PaintCtrlToBmp(Self, B);
        B.SaveToFile('D:\1.bmp');
        PaintCtrlToBmp(Panel1, B);
        B.SaveToFile('D:\2.bmp');
      finally
        B.Free;
      end;
    end;
      

  7.   

    哈哈,楼上兄弟晚来一步。
    我一时思维停顿,只好用一个TImage做中介,现在看了兄弟的代码,用BMP就可以了。其他思路是一样的