MFC 图片部分透明

1. 在头文件中,定义控制变量:

 CDC m_dcMem;    //内存

 CDC  m_dcBuf;    //缓冲

 CBitmap m_bmpBg;  //背景图片

 CBitmapm_bmp;   //图片

 BITMAP m_infoBmpBg;
 BITMAP m_infoBmp;

 

2.在初始化函数OnInitDialog()中:

 m_bmpBg.LoadBitmap(IDB_GAME_BG); //加载图片

 m_bmp.LoadBitmap(IDB_BMP);    

 

 m_bmpBg.GetBitmap(&m_infoBmpBg);//绑定变量

 m_bmp.GetBitmap(&m_infoBmp);

 

 CDC *pDC = GetDC(); 
 m_dcMem.CreateCompatibleDC(pDC); //获取句柄
 m_dcMem.SelectObject(&m_bmpBg);  //选择背景图案载入内存
 m_dcBuf.CreateCompatibleDC(pDC);

 

 RECT rc;
 GetWindowRect(&rc);
 int cyCaption =GetSystemMetrics(SM_CYCAPTION);
 MoveWindow(rc.left,rc.top,m_infoBmpBg.bmWidth,m_infoBmpBg.bmHeight+cyCaption);
 
 ReleaseDC(pDC);

 

3.在函数OnPaint()中:

 dc.BitBlt(目标区域起点x坐标,目标区域起点y坐标,宽度,高度,&m_dcMem,图片起点x坐标,图片起点y坐标,SRCCOPY); //SRCCOPY表示拉伸

 

4.在实现的代码中,选择要显示的图片:

m_dcBuf.SelectObject(&m_bmp);

 

TransparentBlt(m_dcMem,目标区域起点x坐标,目标区域起点y坐标,宽度,高度,m_dcBuf,图片起点x坐标,图片起点y坐标,宽度,高度,RGB(48,76,112)); //调用透明函数,RGB(48,76,112)为要被设置为透明的颜色

 

 CRectrc(目标区域起点x坐标,目标区域起点y坐标,目标区域终点x坐标,目标区域终点y坐标,);
 
 InvalidateRect(&rc); //更新区域
 

你可能感兴趣的:(MFC 图片部分透明)