现有两张图片pic1和pic2 ,它们大部分相同,现要比较它们的不同,并且把pic1中与pic2相同的地发设为透明,关键是速度要命

解决方案 »

  1.   

    用bitblt,合理运用光栅操作符,应该能比较快的实现这个功能吧
      

  2.   

    逐个像素就不考虑了  速度跟不上
    我用TransparentBlt    有黑边
      

  3.   

    大家来找茬?两张图片异或就可以了,很简单的
    Option ExplicitPrivate Sub Command1_Click()
        Dim pic1 As IPictureDisp
        Dim pic2 As IPictureDisp
        
        Set pic1 = LoadPicture(App.Path & "\pic1.bmp")
        Set pic2 = LoadPicture(App.Path & "\pic2.bmp")
        Picture1.Cls
        Picture1.PaintPicture pic1, 0, 0, , , , , , , vbSrcCopy
        Picture1.PaintPicture pic2, 0, 0, , , , , , , vbSrcInvert
    End SubPrivate Sub Form_Load()
        Picture1.BackColor = vbBlack
        Picture1.AutoRedraw = True
    End Sub
     
      

  4.   

    可以在异或后,再用与的方式将 RBG 分量的低位清除掉。
    在 Command1_Click 最后加上下面的语句,清除掉4个低位,按需要调整这个常量。
        Picture1.DrawMode = vbMaskPen
        Picture1.Line (0, 0)-(Picture1.ScaleWidth, Picture1.ScaleHeight), &HF0F0F0, BF
      

  5.   

    问题依旧存在  
    可能大家没看清我的问题:
    有两个图片 pic1和pic2  现在只需要把它们相同的地方找出来,在pic1中把相同的部分设为透明
    给个速度快的思路
      

  6.   

    异或就是最快的方法了。
    要么是两个图片不同,不能做到相同的消去;要么两个图片故意有错位,你调整一下 PaintPicture 的坐标参数试试。