有以下代码
Dim dX As Long, dY As LongCall GetInvertMaskPic(Picture1, Image1, RGB(0, 0, 255))
'背景为蓝色
Call GetMaskPic(Picture1, Image1, RGB(0, 0, 255))dX = Me.ScaleX(Image1.Picture.Width, vbHimetric, vbPixels)
dY = Me.ScaleY(Image1.Picture.Height, vbHimetric, vbPixels)'将image1的图去除背景画在Picture2之上
Set Picture1.Picture = Image1.Picture
BitBlt Picture2.hDC, 0, 0, dX, dY, hMaskDC, 0, 0, vbSrcAnd
BitBlt Picture1.hDC, 0, 0, dX, dY, hInvertMaskDC, 0, 0, vbSrcAnd
BitBlt Picture2.hDC, 0, 0, dX, dY, Picture1.hDC, 0, 0, vbSrcPaint结果是把Imag1的图片取出背景后叠加在Picture2上,Picture1用来放Mask图的(不重要)然后我用SavePicture方法保存Picture2和Image1合成后的图片。但是,保存的还是未合成时的图片,为什么,还有如何解决?
Dim dX As Long, dY As LongCall GetInvertMaskPic(Picture1, Image1, RGB(0, 0, 255))
'背景为蓝色
Call GetMaskPic(Picture1, Image1, RGB(0, 0, 255))dX = Me.ScaleX(Image1.Picture.Width, vbHimetric, vbPixels)
dY = Me.ScaleY(Image1.Picture.Height, vbHimetric, vbPixels)'将image1的图去除背景画在Picture2之上
Set Picture1.Picture = Image1.Picture
BitBlt Picture2.hDC, 0, 0, dX, dY, hMaskDC, 0, 0, vbSrcAnd
BitBlt Picture1.hDC, 0, 0, dX, dY, hInvertMaskDC, 0, 0, vbSrcAnd
BitBlt Picture2.hDC, 0, 0, dX, dY, Picture1.hDC, 0, 0, vbSrcPaint结果是把Imag1的图片取出背景后叠加在Picture2上,Picture1用来放Mask图的(不重要)然后我用SavePicture方法保存Picture2和Image1合成后的图片。但是,保存的还是未合成时的图片,为什么,还有如何解决?
第一步:首先将picturebox1,picturebox2的autoredraw属性设置为true.
第二步:检查一下保存合成后的图片的代码是否如下:
savepicture me.picture2.image,"保存路径"
上述代码决不能写成:savepicture me.picture2.picture,"保存路径"
me.picture2.refresh
savepictue me.picture2.image,"保存路径"
执行这句之后原来的合成效果就没有了
Why???