读书人

Overlay如若同时使用colorKey和Alpha特

发布时间: 2012-08-02 11:35:25 作者: rapoo

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返回失败

[解决办法]

探讨

woshi_ziyu(麦田里的守望者):

你好!
返回的是不可用参数—DERR_INVALIDPARAMS)
但是
//检测硬件是否支持关键色
if(m_stDDCaps.dwOverlayCaps & DDOVERLAYCAPS_CKEYSRC)
{
//激活关键色参数
dwUpdateFlags |= DDOVE……

读书人网 >WinCE

热点推荐