如果我原来的图象是 800×600 的我要从里面截取200×200的一个图象请问怎么截取??

解决方案 »

  1.   

    先用白色填充一个800*600的图片,然后在图片的中间区域用Rect截取200*200用图象填充,这样应该可以的,你试试吧!
      

  2.   

    查看Api函数
      Bitblt??
      

  3.   

    确保运行、测试通过
    var
      Form1: TForm1;
      fbitmap:tbitmap;
      rect1,rect2:trect;
    implementation{$R *.dfm}
    //从800*600、中取200*200,所取得部分可通过更改rect1的四个参数实现
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      rect1:=rect(0,0,200,200);
      rect2:=rect(0,0,200,200);
      fbitmap.width:=200;
      fbitmap.height:=200;
      fbitmap.canvas.copyrect(rect2,image1.canvas,rect1);
      image1.Picture.Bitmap:=nil;
      image1.width:=200;
      image1.height:=200;
      image1.picture.assign(fbitmap);
    end;//将200*200扩充到800*600
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      fbitmap.width:=800;
      fbitmap.height:=600;
      rect1:=rect(0,0,200,200);
      rect2:=rect(300,150,500,350);
      fbitmap.canvas.copyrect(rect2,image1.canvas,rect1);
      image1.Picture.Bitmap:=nil;
      image1.width:=800;
      image1.height:=600;
      image1.picture.assign(fbitmap);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      fbitmap:=tbitmap.Create;
    end;