Overlay如果同时使用colorKey和Alpha特性
最近做一项目
要达到 “把图像的背景色过虑,同时把剩余部分进行一个透明叠加”的效果
我采用Overlay实现叠图功能,但没办法同时达到以上效果。
不知各位大侠可以高见!
代码如下
//设置显示标志
dwUpdateFlags = DDOVER_SHOW;
memset(&stOvfx, 0, sizeof(stOvfx));
stOvfx.dwSize = sizeof(stOvfx);
//检测硬件是否支持关键色
if(m_stDDCaps.dwOverlayCaps & DDOVERLAYCAPS_CKEYSRC)
{
//激活关键色参数
dwUpdateFlags |= DDOVER_KEYSRCOVERRIDE;
stOvfx.dckSrcColorkey.dwColorSpaceLowValue = 0; //黑色作为关键色
stOvfx.dckSrcColorkey.dwColorSpaceHighValue = 0;
}
//检测硬件是否支持overlay alpha
if (m_stDDCaps.dwOverlayCaps & DDOVERLAYCAPS_ALPHACONSTANT)
{
//激活alpha参数
dwUpdateFlags |= DDOVER_ALPHACONSTOVERRIDE;
stOvfx.dwAlphaConstBitDepth = 8;
stOvfx.dwAlphaConst = nTrans;
}
//根据标志显示覆盖表面
hRet = m_pDDSOverlay->UpdateOverlay(&m_SrcRect, m_pDDSPrimary, &m_DstRect, dwUpdateFlags, &stOvfx);
if(hRet != DD_OK)
{
ReleaseAllObjects();
return FALSE;
}
代码中同时设置DDOVER_KEYSRCOVERRIDE和DDOVER_ALPHACONSTOVERRIDE时,UpdateOverlay返回失败
[解决办法]