by ノッチ » 2006年5月26日(金) 17:59
>
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]Dim hResBmp As DWord
> Dim hOldBmp As DWord
> Dim hBuf As DWord
> Dim udtBitmap As BITMAP
> hResBmp=LoadImage(GetModuleHandle(0),"test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE or LR_LOADTRANSPARENT)
> GetObject(hResBmp,Len(udtBitmap),udtBitmap)
> hBuf=CreateCompatibleDC(hDC)
> hOldBmp=SelectObject(hBuf,hResBmp)
> BitBlt(hDC,0,0,udtBitmap.bmWidth,udtBitmap.bmHeight,hBuf,0,0,SRCCOPY) '←第2・第3引数は適宜変更
> SelectObject(hBuf,hOldBmp)
> DeleteObject(hResBmp)
>
LR_LOADTRANSPARENT を指定してLoadImageを呼び出すと
最初の1ピクセルと同じ色をCOLOR_WINDOWという色に変更します。
この色はABのウィンドウの背景色とは違う色なので透過ではなく見えます。
ウィンドウの背景色(COLOR_3DFACE)と同じ色にするには、
hResBmp=LoadImage(GetModuleHandle(0),"test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE or LR_LOADTRANSPARENT or LR_LOADMAP3DCOLORS)
のようにするとできます。
> [hide]Dim hResBmp As DWord
> Dim hOldBmp As DWord
> Dim hBuf As DWord
> Dim udtBitmap As BITMAP
> hResBmp=LoadImage(GetModuleHandle(0),"test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE or LR_LOADTRANSPARENT)
> GetObject(hResBmp,Len(udtBitmap),udtBitmap)
> hBuf=CreateCompatibleDC(hDC)
> hOldBmp=SelectObject(hBuf,hResBmp)
> BitBlt(hDC,0,0,udtBitmap.bmWidth,udtBitmap.bmHeight,hBuf,0,0,SRCCOPY) '←第2・第3引数は適宜変更
> SelectObject(hBuf,hOldBmp)
> DeleteObject(hResBmp)
> [/hide]
LR_LOADTRANSPARENT を指定してLoadImageを呼び出すと
最初の1ピクセルと同じ色をCOLOR_WINDOWという色に変更します。
この色はABのウィンドウの背景色とは違う色なので透過ではなく見えます。
ウィンドウの背景色(COLOR_3DFACE)と同じ色にするには、
[quote]hResBmp=LoadImage(GetModuleHandle(0),"test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE or LR_LOADTRANSPARENT or LR_LOADMAP3DCOLORS)[/quote]
のようにするとできます。