透過済み画像を作りたい
プログラムを始めたところの初心者です。
画像を透過し、ウインドウに表示させたいので、いろいろ探してみたところ、
マスクを自動で作成すると言う物があったので、参考にさせてもらいました。
さらに、その中に、『同じように透過済み画像を作れる』とあったので、いろいろ試したのですが、ダメでした・・・
よろしければ、やり方を教えていただけないでしょうか。
http://oshiete1.goo.ne.jp/qa5254128.html
上を参考にさせていただきました
Dim hDC as HDC, hTemp As HDC, hDest as HDC,hOriDC As HDC
Dim hBmpTemp as HBITMAP, dummy(3) as HBITMAP,hOriBmp As HBITMAP
Dim bmp as BITMAP
Dim hMemDC As HDC,hMemBmp As HBITMAP
hDC=GetDC(NULL)
hTemp=CreateCompatibleDC(hDC)
hDest=CreateCompatibleDC(hDC)
hOriDC=CreateCompatibleDC(hDC)
hMemDC=CreateCompatibleDC(hDC)
ReleaseDC(NULL,hDC)
' 元画像の情報の取得
GetObject(hBmp,Len(bmp),bmp)
' モノクロBITMAPの生成
hBmpTemp=CreateCompatibleBitmap(hDest,bmp.bmWidth,bmp.bmHeight)
hOriBmp=CreateCompatibleBitmap(hOriDC,bmp.bmWidth,bmp.bmHeight)
hMemBmp=hBmp
dummy(0)=SelectObject(hTemp,hBmp)
dummy(1)=SelectObject(hDest,hBmpTemp)
dummy(2)=SelectObject(hOriDC,hOriBmp)
dummy(3)=SelectObject(hMemDC,hMemBmp)
SetBkColor(hTemp,GetPixel(hTemp,0,0))
' 背景マスクの生成
BitBlt(hDest,0,0,bmp.bmWidth,bmp.bmHeight,hTemp,0,0,SRCCOPY)
'スプライト
BitBlt(hOriDC,0,0,bmp.bmWidth,bmp.bmHeight,hDest,0,0,NOTSRCCOPY)
BitBlt(hOriDC,0,0,bmp.bmWidth,bmp.bmHeight,hTemp,0,0,SRCAND)
'透過
BitBlt(hMemDC,0,0,bmp.bmWidth,bmp.bmHeight,hDest,0,0,SRCAND)
BitBlt(hMemDC,0,0,bmp.bmWidth,bmp.bmHeight,hOriDC,0,0,SRCPAINT)
' HBITMAPの切り離し
SelectObject(hTemp,dummy(0))
SelectObject(hDest,dummy(1))
SelectObject(hOriDC,dummy(2))
SelectObject(hMemDC,dummy(2))
' HDCの後始末
DeleteDC(hTemp)
DeleteDC(hDest)
DeleteDC(hOriDC)
DeleteDC(hMemDC)
' 呼び出し元への返り値
MakeMaskWith=hMemBmp
お礼
ありがとうございます、さっそく確認してみたいと思います。