在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

解决方案 »

  1.   

    ……用getpixel setpixel把白的变黑的……
      

  2.   

    Public 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
    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 这个好像可以
      

  3.   

    把图invert了,然后贴,贴完再invert一下就回来了