TransparentBlt Picture3.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, _
  Picture2.hdc, 0, 0, Picture2.ScaleWidth, Picture2.ScaleHeight, vbBlack '定义透明的颜色picture1 背景是白色,画一条黑色的线,picture2背景是黑色,用红色画同一条线。
当picture1和picture2可见时,运行后picture3上显示红色的线,去掉了picture2的背景。当picture2和picture1不可见时,函数运行失败。用paintpicture方法可以实现,但是太慢了。请问如何解决?听说用bitblt可以解决,但是我怎么也弄不出来?请帮忙。

解决方案 »

  1.   

    应该不会慢的,我1024×768的图像,可以达到50帧的效果,使用BITBLE不是不行,但是需要做一堆别的操作,大概需要7,8个API,几十条语句,最关键的就是,速度也差不多。
      

  2.   

    在你的例子里用BITBLT也可以使P3只显示一条红线,关键是你的P1和P2大小一致,线也在相同位置且长度一样,那么只要两句:把P1BITBLT到P3,最后参数用AND;再P2BITBLT到P3,参数为OR。
    取巧了,如果你只有P2,那么楼上的就很对,需要一堆操作,目的就是生成你的P1的内容。
    至于你说不可见时出错那是因为你的P1,P2没有持久位图的原因,属性里设一下就可以了。
      

  3.   

    你可以用另外的方式实现图象混合:
    http://www.applevb.com/art/alphablend.txt
      

  4.   

    呵呵,问题找到了,原因是重新定义了picture1和picture2的坐标。