第一张图片为7寸,而第二张为6寸,第二张放在第一张指定位置上  
  请问,能把这两张图片合成一张保存起来吗?,这个应该怎么做  
  ,请教

解决方案 »

  1.   

    比较简单的办法是使用TCanvas的CopyRect方法,把一张图片作为背景,然后再把另外一张图片copy到上面。如果不嫌麻烦,也可以根据象素,自己编码实现。
      

  2.   

    自己看帮助,或者到google搜索copyrect,搜索以前的帖子也可以。
      

  3.   

    http://www.tomore.com/1/42603.html图象处理的demo,能实现水印的各种效果。
    http://www.tomore.com/1/42601.html现成的打标和水印的例子。
      

  4.   

    //两张图像带通道融合
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls, StdCtrls,registry,ShlObj, ComObj;type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        Button1: TButton;
        Button2: TButton;
        Image3: TImage;
        procedure BlendBmp(BkGround, FrGround: TBitmap; Left, Top, Alpha,
                  TransR, TransG, TransB: Integer);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.BlendBmp(BkGround, FrGround: TBitmap; Left, Top, Alpha,
      TransR, TransG, TransB: Integer);
    var
      X, Y: Integer;
      PB, PF: PbyteArray;
      R1, R2, G1, G2, B1, B2: Integer;
    begin
      BkGround.PixelFormat := pf24bit;
      FrGround.PixelFormat := pf24bit;
      for Y := Top to BkGround.Height - 1 do
      begin
        if Y - Top > FrGround.Height - 1 then
          Break;
        PB := BkGround.ScanLine[Y];
        PF := FrGround.ScanLine[Y - Top];
        for X := Left to BkGround.Width - 1 do
        begin
          if X - Left > FrGround.Width - 1 then
            Continue;
          B1 := PB[X * 3];
          G1 := PB[X * 3 + 1];
          R1 := PB[X * 3 + 2];
          B2 := PF[(X - left) * 3];
          G2 := PF[(X - left) * 3 + 1];
          R2 := PF[(X - left) * 3 + 2];
          if (B2 = TransB) and (G2 = TransG) and (R2 = TransR) then
            Continue;
          PB[X * 3] := (B2 * Alpha + B1 * (255 - Alpha)) div 255;
          PB[X * 3 + 1] := (G2 * Alpha + G1 * (255 - Alpha)) div 255;
          PB[X * 3 + 2] := (R2 * Alpha + R1 * (255 - Alpha)) div 255;
        end;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      bmp:TBitMap;
    begin
    try
      bmp:=TBitMap.Create ;
      bmp.Assign(Image1.Picture.Bitmap);
      BlendBmp(bmp,Image2.Picture.Bitmap ,10,10,10,255,255,255);
      image1.Picture.Assign(bmp);
      image1.Refresh;
    finally
      bmp.free;
    end;end;procedure TForm1.Button2Click(Sender: TObject);
    var
      bmp : TBitmap;
    begin
      bmp:=Tbitmap.Create;
      Image1.Picture.LoadFromFile('.\b.jpg');
      bmp.Assign(image1.Picture.Graphic);
      Image3.Picture.Assign(bmp);
    //  bmp.
    end;end.