Active Basic 画像の透過処理
AB4.23.00を使っています。
簡単なゲームを作ろうと思って作成を進めているのですが、
画像を透過する処理でつまずいてしまいました。
Sub ShowPictures()
/*ピクチャを描写する*/
Dim n As Long
Dim hDC As HDC
Dim hMyMaskDC As HDC '自機マスク用
Dim hMyMaskBmp As HBITMAP '自機マスク用
Dim hMyTempDC As DWord
Dim hMyTempBmp As DWord
hDC=GetDC(hMainWnd)
'背景
BitBlt(hMemDC,0,0,640,480,hBackDC,0,0,SRCCOPY)
'敵画像
For n=0 to 100 Step 1
BitBlt(hMemDC,ex[n],ey[n],30,30,hEneDC[n],0,0,SRCCOPY)
Next
'自機描写
hMyMaskDC=CreateCompatibleDC(hDC)
hMyMaskBmp=CreateBitmap(40,50,1,1,0)
SelectObject(hMyMaskDC,hMyMaskBmp)
BitBlt(hMyMaskDC,0,0,x,y,hMyDC,0,0,SRCCOPY)
hMyTempDC=CreateCompatibleDC(hDC)
hMyTempBmp=CreateCompatibleBitmap(hDC,40,50)
SelectObject(hMyTempDC,hMyTempBmp)
BitBlt(hMyTempDC,0,0,x,y,hMyMaskDC,0,0,NOTSRCCOPY)
'BitBlt(hMyTempDC,0,0,x,y,hMyDC,x,y,SRCAND)
'キャラクタ画像をOR転送
BitBlt(hMemDC,0,0,x,y,hMyTempDC,0,0,SRCPAINT)
'マスク画像をAND転送
BitBlt(hMemDC,0,0,x,y,hMyMaskDC,0,0,SRCAND)
'マスク用画像をメモリから解放
DeleteDC(hMyMaskDC)
DeleteObject(hMyMaskBmp)
'キャラクタの一時画像をメモリから解放
DeleteDC(hMyTempDC)
DeleteObject(hMyTempBmp)
InvalidateRect(hMainWnd,ByVal 0,FALSE)
DeleteObject(hMyMaskBmp)
DeleteDC(hMyMaskDC)
End Sub
描写処理のルーチンです。
これを実行すると、黒い塊になってしまいます。
どのように書けば、ちゃんと表示できるようになるのでしょうか。
すみませんが、ご教授をお願いします。