首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

AlphaBlend变暗,仿QQ截图,有有关问题

2012-06-12 
AlphaBlend变暗,仿QQ截图,有问题!BOOL CCatchScreenDlg::OnEraseBkgnd(CDC* pDC){//用整个桌面填充全屏对

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里,混合的时候用这个原始图与黑色位图混合才行

热点排行