如何将两幅图象合并成一个?将一幅图象中白色或者蓝色的部分图象用另外一幅图象中的某一部分来代替???????????????
解决方案 »
- 请教Delphi中如何实现像.NET DatSET一样的离线操作
- 怎么老是增加不上照片呢?
- 喜欢李维书籍又嫌贵的朋友进来看看…… 同时散分!
- 不建拨号连接,即可拨号。程序如何编写?
- 数据库备份问题?(为何只能备份到服务器)
- 这条SQL语句如何写?
- 标签打印机打印图片的问题(有vb代码,如何转为delphi)
- 那个更重要??,来者有分
- 哪里有关于介绍ADO的文章或书籍?谢啦:)
- 怎样定期将一地数据库记录传送另一地相同结构的数据库中
- 用wise9.01打包安装后,程序路径放在注册表。问题是:路径总是被截短,如:D:\Program Files\ECSMS变成D:\Progar~1\ECSMS,为何?郁闷!
- 大量编程书籍下载(限9号)ftp://218.11.26.114
//好的话,就给我加分吧!!越多越好啊!!!
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;
关于掩膜可参考TBitmap.Mask的帮助或自己用循环写TBitmap.Canvas.CopyMode:=cmSrcAnd; //“AND”模式拷贝
TBitmap.Canvas.CopyMode:=cmSrcPaint; //“OR”模式拷贝区域定义用矩形 TRect以上具体用法帮助文件中都有说明,够详细
对了还有当创建两个IMAGE 的时候为什么总是后创建的挡住前面创建的?有什么办法可以解决吗?能不能在我做为背景的图片上加上一程蒙板,让两个IMAGE 同时能在重合的地方显示?