Puedes probar la función TransparentBlt.
BOOL TransparentBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int hHeightDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, UINT crTransparent);
crTransparent: el valor RGB en el mapa de bits de origen se trata como un color transparente.
Por ejemplo: el color de fondo de la imagen del personaje es negro, use la función TransparentBlt para oscurecer la imagen y configure el parámetro crTransparent en negro RGB (0, 0, 0) para completar la copia transparente.