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支持像素级的颜色混合,从而实现透明和半透明的效果