MFC透明位图显示函数
2010-02-25 17:21
357 查看
研究好久才弄好,注释的比较详细,不明白的函数可以参考MSDN
bool TransparentDIB(CBitmap * dib, /*要绘制的位图*/ CDC * pDC, /*目标DC*/ CRect * rct, /*目标矩形*/ COLORREF transColor, /*透明色*/ bool bStretch /*是否拉伸位图以适应目标矩形*/) { //验证参数 if(dib == NULL || pDC == NULL || rct == NULL) return false; int nWidth; int nHeight; //位图信息对象 BITMAP w_bitmap_info; //获取位图信息 dib->GetBitmap(&w_bitmap_info); //新建设备上下文 CDC w_memoryDC; //创建兼容内存DC w_memoryDC.CreateCompatibleDC(pDC); //根据拉伸状态获得图像实际绘制尺寸 if(bStretch) { nWidth = rct->Width(); nHeight = rct->Height(); } else { nWidth = w_bitmap_info.bmWidth; nHeight = w_bitmap_info.bmHeight; } w_memoryDC.SelectObject(dib);//选入位图对象 w_memoryDC.SetBkColor(transColor);//设置透明色 CDC w_maskDC;//创建兼容内存DC作为掩码DC w_maskDC.CreateCompatibleDC(pDC);//创建兼容内存DC作为掩码DC CBitmap w_maskBitmap;//创建新位图作为掩码位图 w_maskBitmap.CreateBitmap(w_bitmap_info.bmWidth,w_bitmap_info.bmHeight,1,1,NULL); //创建新位图作为掩码位图 w_maskDC.SelectObject(&w_maskBitmap);//选入掩码位图 w_maskDC.BitBlt(0,0,w_bitmap_info.bmWidth,w_bitmap_info.bmHeight,&w_memoryDC,0,0,SRCCOPY); //SRCCOPY方式将源位图以原始大小绘制到掩码DC pDC->StretchBlt(0,0,nWidth,nHeight,&w_memoryDC,0,0,w_bitmap_info.bmWidth,w_bitmap_info.bmHeight,SRCINVERT); //SRCINVERT方式将源位图拉伸绘制到窗口DC pDC->StretchBlt(0,0,nWidth,nHeight,&w_maskDC,0,0,w_bitmap_info.bmWidth,w_bitmap_info.bmHeight,SRCAND); //SRCAND方式将掩码位图拉伸绘制到窗口DC pDC->StretchBlt(0,0,nWidth,nHeight,&w_memoryDC,0,0,w_bitmap_info.bmWidth,w_bitmap_info.bmHeight,SRCINVERT); //SRCINVERT方式将源位图拉伸绘制到窗口DC //完成绘制 w_memoryDC.DeleteDC();//删除内存DC w_maskDC.DeleteDC();//删除掩码DC return true; }
相关文章推荐
- 自定义MFC透明位图函数
- MFC中实现位图的透明显示
- 透明位图显示//TransparentBlt //DrawTransparentBitmap函数
- 显示透明位图出现的怪异问题(TransparentBlt2()函数) 在《Windows游戏编程快速入门方法》中遇到的
- MFC中显示 .bmp格式的位图
- mfc 位图显示方法 使用cbitmap和hbitmap
- VC/MFC 如何将位图缩放显示在Static控件中
- MFC对话框上显示位图
- MFC调用win32窗口显示调试信息,使用AllocConsole 函数
- 如何在VC中显示透明背景位图
- MFC显示位图的几种方法
- 【转】透明位图的显示
- MFC中显示一张位图
- GIS地理信息系统中的位图透明画法,可用在栅格影像数据的显示上
- MFC两个对话框同时显示和GetParent()函数
- vs2010基于MFC位图打开显示保存
- MFC基于对话框如何添加位图并使位图背景透明(TransparentBlt函数)
- MFC透明位图(1)--BMP的实现
- 显示透明位图
- MFC中位图的显示