在VB中,如何用bitblt过滤掉黑色的边缘,显示透明图
本人已知过滤掉白色边缘的方法,但不知道如何用bitblt过滤掉黑色的边缘。
请知道的高手,告诉一下。谢谢。
过滤掉白色边缘:
Private Const MERGEPAINT = &HBB0226
Private Const SRCAND = &H8800C6
Private Const SRCCOPY = &HCC0020Private 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
BitBlt Me.hDC, 100, 100, 200, 150, PIC2.hDC, 0, 0, MERGEPAINT
BitBlt Me.hDC, 100, 100, 200, 150, PIC1.hDC, 0, 0, SRCAND
本人已知过滤掉白色边缘的方法,但不知道如何用bitblt过滤掉黑色的边缘。
请知道的高手,告诉一下。谢谢。
过滤掉白色边缘:
Private Const MERGEPAINT = &HBB0226
Private Const SRCAND = &H8800C6
Private Const SRCCOPY = &HCC0020Private 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
BitBlt Me.hDC, 100, 100, 200, 150, PIC2.hDC, 0, 0, MERGEPAINT
BitBlt Me.hDC, 100, 100, 200, 150, PIC1.hDC, 0, 0, SRCAND
Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Public Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Public Sub TransparentBlt(DstDc As Long, _
SrcDC As Long, _
SrcMaskDc As Long, _
SrcX As Integer, _
SrcY As Integer, _
Width As Integer, _
Height As Integer, _
DstX As Integer, _
DstY As Integer)
Dim MonoPic As Long, hMonoPic As Long, sqMonoPic As Long
MonoPic = CreateCompatibleDC(DstDc)
hMonoPic = CreateCompatibleBitmap(DstDc, Width, Height)
sqMonoPic = SelectObject(MonoPic, hMonoPic)
r = BitBlt(MonoPic, 0, 0, Width, Height, DstDc, DstX, DstY, vbSrcCopy)
Debug.Print r
r = BitBlt(MonoPic, 0, 0, Width, Height, SrcMaskDc, SrcX, SrcY, vbSrcAnd)
Debug.Print r
r = BitBlt(MonoPic, 0, 0, Width, Height, SrcDC, SrcX, SrcY, vbSrcInvert)
Debug.Print r
r = BitBlt(DstDc, DstX, DstY, Width, Height, MonoPic, 0, 0, vbSrcCopy)
Debug.Print r
DeleteObject hMonoPic
DeleteDC MonoPic
End Sub 这个好像可以