本帖最后由 mustmust 于 2012-04-05 23:20:31 编辑

解决方案 »

  1.   

    copyrect 可以,自己看看怎么用吧
    http://blog.csdn.net/jinshaopu/article/details/6451413
      

  2.   

    //合成照片(实现两张图左右合并)----------------------------------------------------------------------
    function TDM.ComposeImage(Image_A, Image_B: string): Boolean;
    var
      Img_A, Img_B, Img_C, Img_Temp: TJPEGImage;
      bmp_t, bmp: TBitmap;
      TempPath:string;
    begin
      Result := false;
      try
        Img_A := TJPEGImage.Create;
        Img_B := TJPEGImage.Create;
        //最终合成的图片
        Img_C := TJPEGImage.Create; 
        //临时存存储
        Img_Temp := TJPEGImage.Create;
        try
          //加载第一张图片
          Img_A.LoadFromFile(Image_A);
          //加载第二张图片
          Img_B.LoadFromFile(Image_B);
          bmp := TBitmap.Create;
          bmp_t := TBitmap.Create;
          try
            //合成后图片的宽度,如果不变此处可以不需要
            bmp.Width := Img_A.Width + Img_B.Width
            //合成后图片的高度,如果不变此处可以不需要
            bmp.Height := Img_A.Height; 
            //把第一张图加载到临时画布中
            bmp_t.Assign(Img_A);
            //画第一张图(从Left=0,top=0的地方开始画)
            bmp.Canvas.Draw(0, 0, bmp_t);
            //把第二张图加载到临时画布中
            bmp_t.Assign(Img_B);
            //AV5直接拼接B图(从Left =Img_A.Width,top-0的地方开始拼接第二张图)
             bmp.Canvas.Draw(Img_A.Width, 0, Img_B);
            //拼接后的图片存储
            Img_Temp.Assign(bmp);
            TempPath := 'C:\1.jpg';
            Img_Temp.SaveToFile(TempPath);
            //删除原有文件
            DeleteFile(PChar(Image_A));
            DeleteFile(PChar(Image_B));
            Result := true;
          finally
            bmp.Free;
            bmp_t.Free;
          end;
        finally
          Img_A.Free;
          Img_B.Free;
          Img_C.Free;
          Img_Temp.Free;
        end;
      except
      end;
    end;
      

  3.   

    就用CopyRect给你写个简单的,如果是jpg格式实现方法类似
    下面是将图片2中某个区域,复制到图片1中对应的区域(区域大小,复制的位置可以自己调),合并后保存procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      bmp:Tbitmap;
      Rt:TRect;
    begin
      bmp:=Tbitmap.Create;      {创建1个位图}
      try
      Rt:=Rect(0,0,100,100);   {要复制的区域}
      image1.Canvas.CopyRect(Rt,image2.Canvas,Rt);   {界面上效果}  bmp.Width:=image1.Picture.Width;               {设置宽高与图片1相等}
      bmp.Height:=image1.Picture.Height;
      bmp.Canvas.CopyRect(Rect(0,0,bmp.Width,bmp.Height),image1.Canvas,Rect(0,0,image1.Picture.Width,image1.Picture.Height)); {完整复制图片1}
      bmp.Canvas.CopyRect(Rt,image2.Canvas,Rt);      {复制图片2的Rt区域}
      bmp.SaveToFile('d:\1.bmp');
      finally
        bmp.Free;
      end;
    end;