TransParentBitBlt可以做到。
例子目前没有

解决方案 »

  1.   

    第一张是把你那副"小"图片的要透明部分全部用黑色填充,放到图片框picture1里
    第二张是把你那副"小"图片的要透明部分用白色填充,要显示部分用黑色填充,放到图片框picture2里(两个图片框一样大)示例代码如下:Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
    Private Sub Command1_Click()
        Picture1.ScaleMode = 3
        Picture2.ScaleMode = 3
        w = Picture1.ScaleWidth
        h = Picture1.ScaleHeight
        hDC2 = Picture2.hDC
        hDC1 = Picture1.hDC
        Call BitBlt(Me.hDC, 0, 0, w, h, Picture2.hDC, 0, 0, vbSrcAnd)
        Call BitBlt(Me.hDC, 0, 0, w, h, Picture1.hDC, 0, 0, vbSrcInvert)
    End Sub
      

  2.   

    首先先用图形处理软件做两副特殊图片
    第一张是把你那副"小"图片的要透明部分全部用黑色填充,放到图片框picture1里
    第二张是把你那副"小"图片的要透明部分用白色填充,要显示部分用黑色填充,放到图片框picture2里(两个图片框最好一样大)Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
    Private Sub Command1_Click()
        Picture1.ScaleMode = 3
        Picture2.ScaleMode = 3
        w = Picture1.ScaleWidth
        h = Picture1.ScaleHeight
        hDC2 = Picture2.hDC
        hDC1 = Picture1.hDC
        Call BitBlt(Me.hDC, 0, 0, w, h, Picture2.hDC, 0, 0, vbSrcAnd)
        Call BitBlt(Me.hDC, 0, 0, w, h, Picture1.hDC, 0, 0, vbSrcInvert)
    End Sub
      

  3.   

    你只需要两个图片覆盖其中一个背景是透明的吧?
    用两个image控件就可以了,上面一个小的image 用gif 图片,透明背景,位置设好就可以了。
    要是一定要在picturebox 中就将这两个image  放在picturebox 不就可以了?
      

  4.   

    snakeegg说得挺对头的,遗憾的是,我想一副是较大的图做背景,另一较小的贴上去(滤掉小图片的背景),而icevi说的方法不能被savepicture picture1.image,"d:\pic.bmp"所保存
    本人对BitBlt的用法很感兴趣,就是不知道详细,就以上用法请指教!(定给分!定给分!定给分!定给分!定给分!)
      

  5.   

    楼上的老兄,我只能给出那么多的分,这样吧,你先答了题,我另外再设一题,名为“加分chenwhenlong!”,我再给你加40分,你看如何?
    我是求知若渴,不惜血本啊。
      

  6.   

    snakeegg的方法可以的,可以先把做背景图的picture装入form的picture属性,然后再用snakeegg的方法,如果load时就显示,别忘了autoredraw=true
    bitblt的参数与vb自带的paintpicture的参数意义差不多。
      

  7.   

    TransParentBitBlt可以做到,最后一个参数是需要透明的颜色。
      

  8.   

    你的邮箱是多少?我给你发一份。[email protected]