[ここをクリックすると内容が表示されます]
これで、マスク画像が作成されます。コード: 全て選択
Function MakeMask( ByVal hBmp as HBITMAP ) as HBITMAP
Dim hDC as HDC, hTemp As HDC, hDest as HDC
Dim hBmpTemp as HBITMAP, dummy(1) as HBITMAP
Dim bmp as BITMAP
hDC=GetDC(NULL)
hTemp=CreateCompatibleDC(hDC)
hDest=CreateCompatibleDC(hDC)
ReleaseDC(NULL,hDC)
' 元画像の情報の取得
GetObject(hBmp,len(bmp),bmp)
' モノクロBITMAPの生成
hBmpTemp=CreateCompatibleBitmap(hDest,bmp.bmWidth,bmp.bmHeight)
dummy(0)=SelectObject(hTemp,hBmp)
dummy(1)=SelectObject(hDest,hBmpTemp)
SetBkColor(hTemp,GetPixel(hTemp,0,0))
' 背景マスクの生成
BitBlt(hDest,0,0,bmp.bmWidth,bmp.bmHeight,hTemp,0,0,SRCCOPY)
' HBITMAPの切り離し
SelectObject(hTemp,dummy(0))
SelectObject(hDest,dummy(1))
' HDCの後始末
DeleteDC(hTemp)
DeleteDC(hDest)
' 呼び出し元への返り値
MakeMask=hBmpTemp
End Function
しかし、これでは普通にマスクしか返りません。
これを透過処理をすましたBMPを返したいのですが、どうすればいいのでしょうか。
ご教授ください