我在编写图象处理软件时候,遇到一个这样的问题:   需要将两个图片合并成一个图片,合并后的图片一个在上,一个在下,图象尺寸有规定的,   请问在imageenview中怎么处理这么问题?我需要处理的程序,高分感谢

解决方案 »

  1.   

    对,用一个TBitMap进行临时处理。
      

  2.   

    var
      lbmp1, lbmp2, lbmpR: TBitmap;
    begin
      lbmp1 := TBitmap.Create;
      lbmp1.LoadFromFile(...);
      lbmp2 := TBitmap.Create;
      lbmp2.LoadFromFile(...);
      lbmpR := TBitmap.Create;
      lbmpR.LoadFromFile(...);
      lbmpR.Width := lbmp1.Width;
      lbmpR.Height := lbmp1.Height + lbmp2.Height;
      lbmpR.Canvas.CopyRect(Rect(0, 0, lbmp1.Width, lbmp1.Height), lbmp1.Canvas,
        Rect(0, 0, lbmp1.Width, lbmp1.Height));
      lbmpR.Canvas.CopyRect(Rect(0, lbmp1.Height, lbmp1.Width, lbmp1.Height + lbmp2.Height),  lbmp1.Canvas, Rect(0, 0, lbmp2.Width, lbmp2.Height));
      lbmpR.SaveToFile(...);
      lbmpR.Free; lbmp1.Free; lbmp2.Free;end;
        
      
      

  3.   

    代码: 
     ImageEnView1.Blank;
      ImageEnView1.LayersSync := False;
    ImageEnView1.Center:=False;
      ImageEnView1.MouseInteract := [miMoveLayers, miResizeLayers];
    ImageEnView1.IO.LoadFromFile('1.jpg');//第一张
    ImageEnView1.Layersadd;//增加层
    ImageEnView1.IO.LoadFromFile('2.jpg');//第二张
    ImageEnView1.Layers[1].PosX.Left:=ImageEnView1.Layers[0].Width;//定义位置
    ImageEnView1.LayersMerge(0,1);//合并图片
    ImageEnView1.IO.SaveToFileJpeg('3.jpg');//保存图片
      

  4.   

    zwjchina(蒲石)和givemeliu(delphi英雄@@@) 的方法是可以的,我现在采用的是givemeliu(delphi英雄@@@) 所说的方法,因为我用了IMAGEENVIEW控件。  另外还有一个小问题需要大家解决:  就是当两个图片合并的时候,有一个图片大些,另外一个图片很小,我将小图片要放在大图片上面,但是由于小图片有个白色的背景,我需要将白色背景去掉,在合成的时候有什么办法啊???
      

  5.   

    ImageEnView1.Proc.SetTransparentColors(CreateRGB(255, 255,255), CreateRGB(255, 255, 255), 0); // 设置透明色为白色