用canvas在form上画图像之后,怎样保存下来,保存为bmp、jpg都行

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);   var 
          bmp:  TBitmap; 
          rgn:  HRGN; 
      begin 
          bmp  :=  TBitmap.Create; 
          try 
              bmp.LoadFromFile('D:\免疫渗率图像\图片 004.BMP');    //  你想显示的图片           rgn  :=  CreateEllipticRgn(126,106,442,422); 
              if  rgn  <>  0  then  begin 
                  try 
                      SelectObject(Canvas.Handle,  rgn); 
                      Canvas.Draw(0,0,bmp); 
                  finally 
                      DeleteObject(rgn); 
                  end; 
              end; 
          finally 
              bmp.Free; 
          end; 
    end; 
    用上面的代码可以在form中画出图像中的一块圆形区域,不知道怎么保存下来form上画出的圆形区域,为了保存想在image控件上画,但是为什么把canvas.draw改成image1.canvas.draw画出的图像还是原图呢,得不到跟form上画的一样的圆形图像。
      

  2.   

    unit   Unit1;   
        
      interface   
        
      uses   
          Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,   
          Dialogs,   ExtCtrls;   
        
      type   
          TForm1   =   class(TForm)   
              Bevel1:   TBevel;   
              procedure   FormCreate(Sender:   TObject);   
              procedure   FormPaint(Sender:   TObject);   
              procedure   FormDblClick(Sender:   TObject);   
          private   
              {   Private   declarations   }   
              Rect:   Array[0..10]   of   TPoint;   
          public   
              {   Public   declarations   }   
          end;   
        
      var   
          Form1:   TForm1;   
        
      implementation   
        
        
      {$R   *.dfm}   
        
      procedure   TForm1.FormCreate(Sender:   TObject);   
      var   
          i   :   Integer;   
      begin   
          Self.Canvas.Pen.Color   :=   clBlue;   
          for   i   :=   0   to   10   do   
          begin   
                  Self.Rect[i].X   :=   Random(Self.Width);   
                  Self.Rect[i].Y   :=   Random(Self.Height);   
          end;   
          Self.Bevel1.Align   :=   alClient;   
          Self.Bevel1.Visible   :=   False;   
      end;   
        
      procedure   TForm1.FormPaint(Sender:   TObject);   
      var   
          i:   Integer;   
      begin   
          Self.Canvas.MoveTo(Self.Rect[0].X,   Self.Rect[0].Y);   
          for   i   :=   1   to   10   do   
          begin   
              Self.Canvas.LineTo(Self.Rect[i].X,   Self.Rect[i].Y);   
          end;   
      end;   
        
      procedure   TForm1.FormDblClick(Sender:   TObject);   
      var   
          Bit:   TBitMap;   
      begin   
          Bit   :=   TBitMap.Create;   
          Bit.Width   :=   Self.Bevel1.Width;   
          Bit.Height   :=   Self.Bevel1.Height;   
          BitBlt(Bit.Canvas.Handle,   0,   0,   Self.Bevel1.Width,   
                        Self.Bevel1.Height,   Self.Canvas.Handle,   0,   0,   SRCCOPY);   
          Bit.SaveToFile('d:\aa.bmp');   
          Bit.Free;   
      end;   
        
      end