第一张是把你那副"小"图片的要透明部分全部用黑色填充,放到图片框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
首先先用图形处理软件做两副特殊图片 第一张是把你那副"小"图片的要透明部分全部用黑色填充,放到图片框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
第二张是把你那副"小"图片的要透明部分用白色填充,要显示部分用黑色填充,放到图片框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
第一张是把你那副"小"图片的要透明部分全部用黑色填充,放到图片框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
用两个image控件就可以了,上面一个小的image 用gif 图片,透明背景,位置设好就可以了。
要是一定要在picturebox 中就将这两个image 放在picturebox 不就可以了?
本人对BitBlt的用法很感兴趣,就是不知道详细,就以上用法请指教!(定给分!定给分!定给分!定给分!定给分!)
我是求知若渴,不惜血本啊。
bitblt的参数与vb自带的paintpicture的参数意义差不多。