我要把窗体的一部分保存为图片
但不显示窗体。
我该怎么办

解决方案 »

  1.   

    procedure tform1.Button1Click(Sender: TObject);
    var
     Fullscreen:Tbitmap;
     FullscreenCanvas:TCanvas;
     dc:HDC;
     sBmp: TMemoryStream;
    begin
      top:=-3000;
      Fullscreen := TBitmap.Create;     
      Fullscreen.Width := screen.width;
      Fullscreen.Height := screen.Height;
      DC := GetDC (0);   
      FullscreenCanvas := TCanvas.Create;
      FullscreenCanvas.Handle := DC;  Fullscreen.Canvas.CopyRect
      (Rect (0, 0, screen.Width, screen.Height), fullscreenCanvas,
      Rect (0, 0, Screen.Width, Screen.Height));//把整个屏幕复制到BITMAP中
      //这里的screen.Width,screen.Height 你可以进行控制就可以保存成部分图片了。
      sBmp:=TMemoryStream.Create;
      try
        Fullscreen.SaveToStream(sBmp);
        sBmp.Position := 0;
        FullscreenCanvas.Free;   
        ReleaseDC (0, DC);              
        sBmp.SaveToFile('C:\A.BMP'); //文件路径
      finally
      sBmp.Free;
      end;
      messagebeep(1);
    end;
      

  2.   

    不行,我是这样写的共大家参考var
        path:string;
        dc:Hdc;
    begin
      bitmap:=Tbitmap.Create;
      bitmap.Width:=FBarCode.barcode.Width;
      bitmap.Height:=FBarCode.barcode.Height;  dc:=Getdc(0);
      bitmap.Handle:=dc;    bitblt(bitmap.Canvas.Handle,0,0,bitmap.Width,bitmap.Height,
             FBarCode.Canvas.Handle,
             0,0,SRCCOPY);  path:=ExtractFilePath(Application.ExeName);
      path:=path+'barCode.bmp';
      bitmap.SaveToFile(path);
      bitmap.Free;
    end
      

  3.   

    >>  dc:=Getdc(0);
    >>  bitmap.Handle:=dc;
    to  lin00lin(小林):
    我觉得这两句有问题!
    还有, 窗体显示否, 我觉得与你的copy到bmp没有关系!!! 
      

  4.   

    >>  bitmap.Handle:=dc; 改为:bitmap.Canvas.Handle:=dc;
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Bitmap : TBitmap ;
    begin
      if not Assigned(Form2) then
        Form2 := TForm2.Create(Application);
      Bitmap := TBitmap.Create ;
      try
        bitmap.Width := form2.Width ;
        bitmap.Height := form2.Height ;
        Msg.DC := bitmap.Canvas.Handle ;
        form2.PaintTo(bitmap.Canvas,0,0) ;
        Bitmap.SaveToFile('c:\1.bmp');
      finally
        Bitmap.Free ;
      end;
    end;