路过的大虾帮看看,,,有一个普通的图片需要把这个图片里的
形状是封闭的多边形,可能是3边,4边,5边(可能不等边)...
当知道每一点的座标时,如何把这个图片里这个多边形复制到另一个图片里去?canvas.CopyRect只能取方形,无法满足要求还有什么办法吗?如何写这个代码?

解决方案 »

  1.   

    准备一个原图显示在img1上, 一个背景轮廓图显示在img2上,背景图先裁剪成你需要的多变形。
    var
      r:trect;
     begin
      r.left:=0;
      r.top:=0;
      r.right:= img1.width;
      r.bottom:= img1.height;
      img1.canvas.copymode:=cmsrcpaint;
      img1.canvas.copyrect(r,img2.canvas,r);
     end;
      

  2.   

    忘了说,显示背景轮廓图的img2的visible设为false 
      

  3.   

    就像这样 
    procedure TForm1.FormCreate(Sender: TObject);
    var
      b, b2: TBitmap;
    begin
      b := TBitmap.Create;
      b.LoadFromFile('c:\bbbb.bmp');
      img1.Picture.Bitmap.Assign(b);
      img1.Transparent:=True;
      b.Free;  b2 := TBitmap.Create;
      b2.LoadFromFile('c:\aaaa.bmp');
      img2.Picture.Bitmap.Assign(b2);
      b2.Free;
    end;procedure TForm1.btn1Click(Sender: TObject);
    var
      r: trect;
    begin
      r.left := 0;
      r.top := 0;
      r.right := img1.width;
      r.bottom := img1.height;
      img1.canvas.copymode := cmsrcpaint;
      img1.canvas.copyrect(r, img2.canvas, r);
    end;