在一个图像中叠加图片

Rob*_*son 5 delphi image

是否可以通过叠加在一起来将两个或更多相同大小的bmp图片合并为一个?与在Windows XP MS Paint中完成的方式相同:将一张图片粘贴到另一张图片中,次要颜色为透明.

例

Ser*_*yuz 9

你可以使用这种效果的Transparent属性TBitmap.由于您的位图有黑色边框,因此自动透明色(图像数据的第一个像素)不起作用,您还需要将TransparentColor属性设置为"clWhite".

var
  bmp1, bmp2: TBitmap;
begin
  bmp1 := TBitmap.Create;
  bmp1.LoadFromFile('...\test1.bmp');

  bmp2 := TBitmap.Create;
  bmp2.LoadFromFile('...\test2.bmp');

//  bmp2.PixelFormat := pf24bit;  // with 32 bit images I need this, don't know why
  bmp2.Transparent := True;
  bmp2.TransparentColor := clWhite;
  bmp1.Canvas.Draw(0, 0, bmp2);  // draw bmp2 over bmp1

  // this is how the merged image looks like
  Canvas.Draw(0, 0, bmp1);
  ..
Run Code Online (Sandbox Code Playgroud)