Here's a general-purpose graphics module with many APIs that 'sister' existing ones (such as AlphaBlt and TileBlt). Part 1, Declarations:
VB Code:
  1. Option Explicit
  2.  
  3. Public Type mLong
  4.     L As Long
  5. End Type
  6.  
  7. Public Type mRGB
  8.     R As Byte
  9.     G As Byte
  10.     B As Byte
  11.     A As Byte
  12. End Type
  13.  
  14. Public Enum TEXTDRAWPARAM
  15.     TDP_LEFT = 0
  16.     TDP_RIGHT = 1
  17.     TDP_HCENTRE = 2
  18.     TDP_TOP = 4
  19.     TDP_BOTTOM = 8
  20.     TDP_VCENTRE = 16
  21. End Enum
  22.  
  23. Public Const FW_DONTCARE = 0
  24. Public Const FW_THIN = 100
  25. Public Const FW_EXTRALIGHT = 200
  26. Public Const FW_LIGHT = 300
  27. Public Const FW_NORMAL = 400
  28. Public Const FW_MEDIUM = 500
  29. Public Const FW_SEMIBOLD = 600
  30. Public Const FW_BOLD = 700
  31. Public Const FW_EXTRABOLD = 800
  32. Public Const FW_HEAVY = 900
  33. Public Const FW_BLACK = FW_HEAVY
  34. Public Const FW_DEMIBOLD = FW_SEMIBOLD
  35. Public Const FW_REGULAR = FW_NORMAL
  36. Public Const FW_ULTRABOLD = FW_EXTRABOLD
  37. Public Const FW_ULTRALIGHT = FW_EXTRALIGHT
  38. Public Const ANSI_CHARSET = 0
  39. Public Const DEFAULT_CHARSET = 1
  40. Public Const SYMBOL_CHARSET = 2
  41. Public Const SHIFTJIS_CHARSET = 128
  42. Public Const HANGEUL_CHARSET = 129
  43. Public Const CHINESEBIG5_CHARSET = 136
  44. Public Const OEM_CHARSET = 255
  45. Public Const OUT_CHARACTER_PRECIS = 2
  46. Public Const OUT_DEFAULT_PRECIS = 0
  47. Public Const OUT_DEVICE_PRECIS = 5
  48. Public Const CLIP_DEFAULT_PRECIS = 0
  49. Public Const CLIP_CHARACTER_PRECIS = 1
  50. Public Const CLIP_STROKE_PRECIS = 2
  51. Public Const DEFAULT_QUALITY = 0
  52. Public Const DRAFT_QUALITY = 1
  53. Public Const PROOF_QUALITY = 2
  54. Public Const DEFAULT_PITCH = 0
  55. Public Const FIXED_PITCH = 1
  56. Public Const VARIABLE_PITCH = 2
  57. Public Const OPAQUE = 2
  58. Public Const TRANSPARENT = 1
  59. Public Const LOGPIXELSY = 90
  60. Public Const OBJ_BITMAP = 7
  61. Public Const DT_RIGHT = &H2
  62.  
  63. Public Const BI_RGB = 0&
  64. Public Const DIB_RGB_COLORS = 0
  65.  
  66.  
  67. Public Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
  68. Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
  69. Public Declare Function GetDesktopWindow Lib "user32" () As Long
  70. Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
  71. Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
  72. Public Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
  73. Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  74. Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
  75. 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
  76. Public Declare Function GetCurrentObject Lib "gdi32" (ByVal hdc As Long, ByVal uObjectType As Long) As Long
  77. Public Declare Function SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
  78. Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
  79. Public Declare Function DrawIconEx Lib "user32" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long
  80. Public Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal nIconIndex As Long, phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As Long
  81. Public Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long
  82. Public Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
  83. Public Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
  84. Public Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As SIZE) As Long
  85. Public Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal H As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal W As Long, ByVal I As Long, ByVal u As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long
  86. Public Declare Function MulDiv Lib "kernel32" (ByVal nNumber As Long, ByVal nNumerator As Long, ByVal nDenominator As Long) As Long
  87. Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
  88. Public Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
  89. Public Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (Ptr() As Any) As Long
  90. Public Declare Function GetObjectAPI Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
  91. Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
  92. Public Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
  93. Public Declare Function GetDIBits Lib "gdi32" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
  94. Public Declare Function SetDIBits Lib "gdi32" (ByVal hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
  95. Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
  96.  
  97. Public Const DI_MASK = &H1
  98. Public Const DI_IMAGE = &H2
  99. Public Const DI_NORMAL = DI_MASK Or DI_IMAGE
  100.  
  101. Public Type SAFEARRAYBOUND
  102.     cElements As Long
  103.     lLbound As Long
  104. End Type
  105. Public Type SAFEARRAY2D
  106.     cDims As Integer
  107.     fFeatures As Integer
  108.     cbElements As Long
  109.     cLocks As Long
  110.     pvData As Long
  111.     Bounds(0 To 1) As SAFEARRAYBOUND
  112. End Type
  113. Public Type BITMAP
  114.     bmType As Long
  115.     bmWidth As Long
  116.     bmHeight As Long
  117.     bmWidthBytes As Long
  118.     bmPlanes As Integer
  119.     bmBitsPixel As Integer
  120.     bmBits As Long
  121. End Type
  122. Private Type BITMAPINFOHEADER '40 bytes
  123.     biSize As Long
  124.     biWidth As Long
  125.     biHeight As Long
  126.     biPlanes As Integer
  127.     biBitCount As Integer
  128.     biCompression As Long
  129.     biSizeImage As Long
  130.     biXPelsPerMeter As Long
  131.     biYPelsPerMeter As Long
  132.     biClrUsed As Long
  133.     biClrImportant As Long
  134. End Type
  135. Public Type BITMAPINFO
  136.     bmiHeader As BITMAPINFOHEADER
  137.     bmiColors As mRGB
  138. End Type
  139. Public Type RECT
  140.         Left As Long
  141.         Top As Long
  142.         Right As Long
  143.         Bottom As Long
  144. End Type
  145. Public Type SIZE
  146.         cx As Long
  147.         cy As Long
  148. End Type