mDrawMaskImg.bas
上传用户:davilee3
上传日期:2015-04-22
资源大小:986k
文件大小:3k
源码类别:

浏览器

开发平台:

Visual Basic

  1. Attribute VB_Name = "mDrawMaskImg"
  2. 'mDrawMaskImg:  画透明图片
  3. 'by lingll
  4. 'lingll2001@21cn.com
  5. '2004-9-20
  6. Option Explicit
  7. 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
  8. Private Declare Function CreateBitmap Lib "gdi32" (ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal nBitCount As Long, lpBits As Any) As Long
  9. Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
  10. Private Declare Function GetObjectBitmap Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
  11. Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
  12. Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  13. Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
  14. Private Declare Function CopyImage Lib "user32" (ByVal handle As Long, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
  15. Private Declare Function SetBkColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
  16. Private Type BITMAP
  17.     bmType As Long
  18.     bmWidth As Long
  19.     bmHeight As Long
  20.     bmWidthBytes As Long
  21.     bmPlanes As Integer
  22.     bmBitsPixel As Integer
  23.     bmBits As Long
  24. End Type
  25. Private Const IMAGE_BITMAP As Long = 0
  26. Private Const LR_COPYRETURNORG As Long = &H4
  27. Private Const SRCCOPY As Long = &HCC0020
  28. Private Const SRCINVERT As Long = &H660046
  29. Private Const SRCAND As Long = &H8800C6
  30. '以maskColor做透明色
  31. Public Function DrawMaskImage(hSrcBmp&, hDcDest&, maskColor&) As Boolean
  32. Dim tImgBmp&, tImgDc&
  33. Dim tMskBmp&, tMskDc&
  34. Dim tBmp As BITMAP
  35. If GetObjectBitmap(hSrcBmp, Len(tBmp), tBmp) = 0 Then
  36.     DrawMaskImage = False
  37.     Exit Function
  38. End If
  39. tImgBmp = CopyImage(hSrcBmp, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG)
  40. tImgDc = CreateCompatibleDC(hDcDest)
  41. SelectObject tImgDc, tImgBmp
  42. SetBkColor tImgDc, maskColor
  43. tMskBmp = CreateBitmap(tBmp.bmWidth, tBmp.bmHeight, 1, 1, 0)
  44. tMskDc = CreateCompatibleDC(hDcDest)
  45. SelectObject tMskDc, tMskBmp
  46. BitBlt tMskDc, 0, 0, tBmp.bmWidth, tBmp.bmHeight, tImgDc, 0, 0, SRCCOPY
  47. BitBlt tImgDc, 0, 0, tBmp.bmWidth, tBmp.bmHeight, tMskDc, 0, 0, SRCINVERT
  48. BitBlt hDcDest, 0, 0, tBmp.bmWidth, tBmp.bmHeight, tMskDc, 0, 0, SRCAND
  49. BitBlt hDcDest, 0, 0, tBmp.bmWidth, tBmp.bmHeight, tImgDc, 0, 0, SRCINVERT
  50. DeleteObject tImgBmp
  51. DeleteDC tImgDc
  52. DeleteObject tMskBmp
  53. DeleteDC tMskDc
  54. DrawMaskImage = True
  55. End Function