Private Declare Function TransparentBlt Lib "msimg32.dll" (ByVal hdc 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 nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal crTransparent As Long) As Boolean
Private Sub Command1_Click()
'将picture1的一部图像[甚至示被图片覆盖住的背景色]拷贝到picture2中,覆盖其全部空间,并
'将picture1中黑色部分作透明化处理
TransparentBlt Picture2.hdc, 0, 0, ScaleX(Picture2.Width, ScaleMode, vbPixels), ScaleX(Picture2.Height, ScaleMode, vbPixels), _
Picture1.hdc, 0, 0, ScaleX(Picture1.Width, ScaleMode, vbPixels), ScaleX(Picture1.Height, ScaleMode, vbPixels), vbBlack
End Sub
用下面的API函数,crTransparent就是要变成透明的颜色。
Private Declare Function TransparentBlt Lib "msimg32" (ByVal hdcDest As Long, ByVal nXOriginDest As Long, ByVal nYOriginDest As Long, ByVal nWidthDest As Long, ByVal nHeightDest As Long, ByVal hdcSrc As Long, ByVal nXOriginSrc As Long, ByVal nYOriginSrc As Long, ByVal nWidthSrc As Long, ByVal nHeightSrc As Long, ByVal crTransparent As Long) As Long