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); //更新区域
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值