如何将两幅图象合并成一个?将一幅图象中白色或者蓝色的部分图象用另外一幅图象中的某一部分来代替???????????????

解决方案 »

  1.   

    首先将2幅图象的大小设为一致,然后逐点检测,pixels[x][y]碰到白色和蓝的颜色值就拿另一幅图象响应的位置替换,
      

  2.   

    //下面是我编的一个“镂空”程序,你看看吧!!应该很容易理解的!
    //好的话,就给我加分吧!!越多越好啊!!!
    var
      bmpxor,bmpand,bmpinvand,bmpCopy:TBitmap;
      oldcol:Longint;
    begin
      bmpand:=TBitmap.Create;
      bmpand.Height:=yuanimage.Height;
      bmpand.Width:=yuanimage.Width;
      bmpand.Monochrome:=true;
      oldcol:=setbkcolor(yuanimage.canvas.handle,colortorgb(clblack));
      bitblt(bmpand.canvas.handle,0,0,yuanimage.width,yuanimage.height,
              yuanimage.canvas.handle,0,0,SRCCOPY);
      setbkcolor(yuanimage.canvas.handle,colortorgb(oldcol));
      bmpinvand:=TBitmap.Create;
      bmpinvand.Height:=yuanimage.Height;
      bmpinvand.Width:=yuanimage.Width;
      bmpinvand.Monochrome:=true;
      bitblt(bmpinvand.canvas.handle,0,0,yuanimage.width,yuanimage.height,
              bmpand.canvas.handle,0,0,NOTSRCCOPY);
      bmpxor:=TBitmap.Create;
      bmpxor.Height:=yuanimage.Height;
      bmpxor.Width:=yuanimage.Width;
      bmpxor.Monochrome:=true;
      bmpxor.Mask(clblack);
      bitblt(bmpxor.canvas.handle,0,0,yuanimage.width,yuanimage.height,
              bmpinvand.canvas.handle,0,0,SRCINVERT);
      pingimage.Picture.Bitmap:=bmpxor;
      bmpCopy:=TBitmap.Create;
      bmpCopy.Height:=yuanimage.Height;
      bmpCopy.Width:=yuanimage.Width;
      bitblt(bmpCopy.canvas.handle,0,0,yuanimage.width,yuanimage.height,
              backimage.canvas.handle,0,0,SRCCOPY);
      bitblt(bmpCopy.canvas.handle,0,0,yuanimage.width,yuanimage.height,
              bmpxor.canvas.handle,0,0,SRCAND);
      bitblt(bmpCopy.canvas.handle,0,0,yuanimage.width,yuanimage.height,
              yuanimage.canvas.handle,0,0,SRCPAINT);
      louimage.Picture.Bitmap:=bmpCopy;
      bmpxor.FreeImage;
      bmpCopy.FreeImage;
      bmpinvand.FreeImage;
    end;
      

  3.   


    关于掩膜可参考TBitmap.Mask的帮助或自己用循环写TBitmap.Canvas.CopyMode:=cmSrcAnd; //“AND”模式拷贝
    TBitmap.Canvas.CopyMode:=cmSrcPaint; //“OR”模式拷贝区域定义用矩形 TRect以上具体用法帮助文件中都有说明,够详细
      

  4.   

    w_tiger(老虎) :请问你有原代码吗?可以发我一个参考吗?
      

  5.   

    镂空后如何打印?如何将我合成的图片保存成新文件?
    对了还有当创建两个IMAGE 的时候为什么总是后创建的挡住前面创建的?有什么办法可以解决吗?能不能在我做为背景的图片上加上一程蒙板,让两个IMAGE 同时能在重合的地方显示?
      

  6.   

    程序已经发给你们了!!但是,[email protected]地地址有问题!!!