目的:将控件IMAGE1的图像中一区域拷贝到另一个BMP文件中
这段代码执行后,文件tt.bmp是空的var
  bitmap:Tbitmap;
  myrect:TRect;
begin
  myrect:=rect(0,0,360,480);
  bitmap:=Tbitmap.Create;
  bitmap.Canvas.CopyRect(myrect,image1.Canvas,myrect);
  bitmap.SaveToFile(getcurrentdir+'\tt.bmp');
  bitmap.Free;

解决方案 »

  1.   

    myrect:=rect(0,0,360,480);
      bitmap:=Tbitmap.Create;
      bitmap.Canvas.CopyRect(myrect,image1.Canvas,myrect);//你的BMP现在有多大呢?
      bitmap.SaveToFile(getcurrentdir+'\tt.bmp');
      bitmap.Free;
    ////////
     var
      bitmap:Tbitmap;
      myrect:TRect;
    begin
      myrect:=rect(0,0,360,480);
      bitmap:=Tbitmap.Create;
      try
        bitmap.Width:=360;
        bitmap.Height:=480;//现在尺寸可以了。
        bitmap.Canvas.CopyRect(myrect,image1.Canvas,myrect);
        bitmap.SaveToFile(getcurrentdir+'\tt.bmp');
      finally
        bitmap.Free;
      end;
      

  2.   

    因为bitmap没有设置大小,它的默认大小是0;
    var
      bitmap:Tbitmap;
      myrect:TRect;
    begin
      myrect:=rect(0,0,360,480);
      bitmap:=Tbitmap.Create;
      bitmap.Width:=360;
      bitmap.Height:=480;
      bitmap.Canvas.CopyRect(myrect,image1.Canvas,myrect);
      bitmap.SaveToFile(getcurrentdir+'\tt.bmp');
      bitmap.Free;