图片的透明半透明显示!

时间:2022-08-03 19:27:43

/*功能说明:下面的语句实现了对前面两个函数的调用。用于透明半透明显示两张图片。
从中可以学到句柄和对象指针之间的转换方法。

*/

 CPaintDC dc(this); // device context for painting
 
 // TODO: Add your message handler code here
    m_dra=(HBITMAP)LoadImage(NULL,"res//girlmask.bmp",IMAGE_BITMAP,596,329,LR_LOADFROMFILE);
    m_hBg=(HBITMAP)LoadImage(NULL,"res//bg.bmp",IMAGE_BITMAP,600, 450,LR_LOADFROMFILE);
    //上面是加载两张外部图片。
 CDC memdc;//内存DC
 memdc.CreateCompatibleDC(&dc);//创建兼容DC
       
 CBitmap girl;   //声明临时图片对象
 girl.CreateCompatibleBitmap(&dc,600,450);//创建兼容图片
 memdc.SelectObject(&girl);//选入内存设备
        TransparentBMP(&memdc,CRect(0,0,600,450),50,20,m_hBg,m_dra);
        //将带蒙版的图片图片透明显示在内存DC里
 CBitmap pTemp;
 pTemp.CreateCompatibleBitmap(&dc,298,329);
 CBitmap *pgirl=memdc.SelectObject(&pTemp); //获取指针值
 HBITMAP hgirl=pgirl->operator HBITMAP();   //转换为句柄值
 HalfTransparent(&dc,CRect(0,0,600,450),0,0,m_hBg,hgirl,0.7);//半透明显示处理