mfc 半透明输出图片

 1)位图文件

       CBitmap bmp;

bmp.LoadBitmap(IDB_LINK_BITMAP_PICTURE);
//CDC dcMem;
//dcMem.CreateCompatibleDC(lDC);
//CBitmap *oldBitMap = dcMem.SelectObject(&bmp);
BITMAP bitmap;
bmp.GetBitmap(&bitmap);
//lDC->StretchBlt(m_xStart,m_yStart,iWidth,iHeight,&dcMem,0,0,bitmap.bmWidth,bitmap.bmWidth,SRCCOPY);
CDC dc2;
dc2.CreateCompatibleDC(lDC);
dc2.SelectObject(bmp);


BLENDFUNCTION pl;
pl.BlendOp=AC_SRC_OVER;
pl.BlendFlags=0;
pl.SourceConstantAlpha =50;
pl.AlphaFormat=0;

::AlphaBlend(lDC->GetSafeHdc(),m_xStart,m_yStart,lWidth,lHeight,dc2.GetSafeHdc(),0,0,bitmap.bmWidth,bitmap.bmHeight,pl);

        dc2.DeleteDC();
bmp.DeleteObject();

2) 使用CImage 显示半透明图片

       i) TransparentBlt 下面这个是让背景为透明的,TransparentBlt在目标区域中产生透明图像

        if(!img.IsNull())

          img.TransparentBlt (dc.m_hDC,0,0,img.GetWidth(),img.GetHeight(),RGB(255,255,255));

             一般透明色为白色,即只需要把关键色设置为白色即可。

       ii) AlphaBlend支持像素级的颜色混合,从而实现透明和半透明的效果

         

你可能感兴趣的:(mfc)