AlphaBlend变暗,仿QQ截图,有问题!
BOOL CCatchScreenDlg::OnEraseBkgnd(CDC* pDC)
{
//用整个桌面填充全屏对话框背景
CRect rect;
GetClientRect(&rect);
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(m_pBitmap);
memDC.PatBlt(0, 0, rect.Width(),rect.Height(), BLACKNESS);
BLENDFUNCTION blend;
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.AlphaFormat = 0;
blend.SourceConstantAlpha = 80;
pDC->AlphaBlend(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, rect.Width(), rect.Height(), blend);
return TRUE;
}
一开始确实有变暗的效果,但是画截图区域的时候,屏幕就越来越暗,最后就变成黑屏,求解?
[解决办法]
[解决办法]
这个没用过,个人猜测:
AlphaBlend是将源(src)与目标(des)进行混合,你的源是memDC,目标是pDc
第一次是按照你的意思进行混合的,而第二次是用memDC里的黑色位图与上一次混合后的图进行了再次混合,所以你要保存最原始的桌面背景到bitmap里,混合的时候用这个原始图与黑色位图混合才行