有以下代码
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合成后的图片。但是,保存的还是未合成时的图片,为什么,还有如何解决?

解决方案 »

  1.   

    可能的解决办法:
    第一步:首先将picturebox1,picturebox2的autoredraw属性设置为true.
    第二步:检查一下保存合成后的图片的代码是否如下:
            savepicture me.picture2.image,"保存路径"
    上述代码决不能写成:savepicture me.picture2.picture,"保存路径"
      

  2.   

    没有用啊,还有用SavePicture 保存的图片如何制定大小?
      

  3.   

    将代码该为如下在试试:
        me.picture2.refresh
        savepictue me.picture2.image,"保存路径"
      

  4.   

    me.picture2.refresh
    执行这句之后原来的合成效果就没有了
    Why???
      

  5.   

    me.picture2.AutoRedraw 要设为 True