// カラーキー指定
DDCOLORKEY ddck;
ddck.dwColorSpaceLowValue = ddck.dwColorSpaceHighValue = DDColorMatch(lpDDSSprite,RGB(255,0,255)); // Paletteの番号 or RGBで指定
if(lpDDSSprite->SetColorKey(DDCKEY_SRCBLT,&ddck)!=DD_OK){ MessageBox(hWnd,"オフスクリーンバッファの透過色の設定に失敗",strAppName,0); return 1;}
・・・
// DDColorMatch
DWORD CAPPMAIN::DDColorMatch(LPDIRECTDRAWSURFACE lpDDSsrc,COLORREF rgb)
{
・・・
// 色のパレット番号 or RGBを取得
DWORD dw = CLR_INVALID;
DDSURFACEDESC ddsd;
ddsd.dwSize = sizeof(ddsd);
if(lpDDSsrc->Lock(NULL, &ddsd, DDLOCK_WAIT, NULL) == DD_OK)
{
dw = *(DWORD*)ddsd.lpSurface;
if(ddsd.ddpfPixelFormat.dwRGBBitCount != 32) dw &= (1 << ddsd.ddpfPixelFormat.dwRGBBitCount)-1;
lpDDSsrc->Unlock(NULL);
}
・・・
return dw;
}
|