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 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 Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
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
Public Const LR_LOADFROMFILE = &H10
Public Type BITMAPFILEHEADER
bfType As Integer
bfSize As Long
bfReserved1 As Integer
bfReserved2 As Integer
bfOffBits As Long
End Type
Public Type BITMAPINFOHEADER
biSize As Long
biWidth As Long
biHeight As Long
biPlanes As Integer
biBitCount As Integer
biCompression As Long
biSizeImage As Long
biXPelsPerMeter As Long
biYPelsPerMeter As Long
biClrUsed As Long
biClrImportant As Long
End Type
Public Type BitmapStruct
FileHeader As BITMAPFILEHEADER
InfoHeader As BITMAPINFOHEADER
End Type
Dim wid&
Dim hgt&
Dim bm As BitmapStruct
Dim hImage&
Dim hdcImage&
Dim hMask&
Dim hdcMask&
Dim hBuffer&
Dim hdcBuffer&
Dim FileName$
Private Sub Form_Load()
FileName = app.path & "\image.bmp"
GetBitmapInfo
wid = bm.InfoHeader.biWidth
hgt = bm.InfoHeader.biHeight
hImage = LoadImage(ByVal 0&, FileName, 0, wid, hgt, LR_LOADFROMFILE)
hdcImage = CreateCompatibleDC(0)
SelectObject hdcImage, hImage
FileName = app.path & "\mask.bmp"
GetBitmapInfo
wid = bm.InfoHeader.biWidth
hgt = bm.InfoHeader.biHeight
hMask = LoadImage(ByVal 0&, FileName, 0, wid, hgt, LR_LOADFROMFILE)
hdcMask = CreateCompatibleDC(0)
SelectObject hdcMask, hMask
hBuffer = CreateCompatibleBitmap(Form1.hdc, wid, hgt) 'change this to picture1.hdc to blit to picture boxes
hdcBuffer = CreateCompatibleDC(0)
SelectObject hdcBuffer, hBuffer
BitBlt hdcBuffer, 0, 0, Form1.Width, Form1.Height, hdcMask, 0, 0, vbSrcAnd
BitBlt hdcBuffer, 0, 0, Form1.Width, Form1.Height, hdcImage, 0, 0, vbSrcPaint
End Sub
Private Sub GetBitmapInfo()
Dim filenum&
filenum = FreeFile
Open FileName For Random As filenum Len = Len(bm)
Get filenum, 1, bm
Close filenum
If Len(bm) = 0 Then
Debug.Print "Bitmap header is empty"
End If
End Sub