MFC绘图8--生成镂空图

1、利用BitBlt函数将蒙版与背景图做AND运算,并贴图到目的DC

2、将要镂空的图与背景图做OR运算,贴图到目的DC

部分代码:

//取得客户取大小
GetClientRect(&rect);
//建立内存DC
mdc->CreateCompatibleDC(pDC);
//加载背景位图
m_bgBmp.m_hObject=(HBITMAP)::LoadImage(NULL,"b1.bmp",IMAGE_BITMAP,rect.right,rect.bottom,LR_LOADFROMFILE);
//加载人物位图(人物及蒙版同在一张图上)
m_manBmp.m_hObject=(HBITMAP)::LoadImage(NULL,"man.bmp",IMAGE_BITMAP,208,154,LR_LOADFROMFILE);

//取得背景图
mdc->SelectObject(m_bgBmp);
//贴背景图
pDC->BitBlt(0,0,rect.right,rect.bottom,mdc,0,0,SRCCOPY);
//将蒙版与背景图做AND运算
mdc->SelectObject(m_manBmp);
pDC->BitBlt(250,150,104,154,mdc,104,0,SRCAND);
//将要镂空的图与背景图做OR运算
pDC->BitBlt(250,150,104,154,mdc,0,0,SRCPAINT);

时间: 2024-12-03 03:46:17

MFC绘图8--生成镂空图的相关文章

C++MFC编程笔记day06 MFC向导、MFC绘图类使用

 MFC绘图    MFC绘图类包括绘图设备类和绘图对象类    1 绘图设备类      CDC类-父类是CObject,封装的是一般的绘图设备,例如:显示器,            打印机等.      CWindowDC类-父类是CDC类,封装的是窗口对象,包括客户区和非            客户区.      CClientDC类-父类是CDC类,封装的仍然是窗口,但是只包括客户区.      CPaintDC类-父类是CDC类,封装的是窗口的客户区.但是,它只用           

编程-c++、MFC调用labview生成的DLL

问题描述 c++.MFC调用labview生成的DLL 我用labview这个软件生成了一个前面板,labview主要用于显示仪表,现在整个面板生成为一个DLL.我想用vs C++来调用该dll,比如在MFC中一个指定的窗口中显示前面板.请熟悉这方面的大神指点一下或者和我一起讨论下vs和labview的混合编程.不甚感激! 解决方案 参考这篇文章:http://wenku.baidu.com/link?url=EOQA4viGBoEX_0ztvAa0RjYUX1lohMqvtfV3vtswGkB

php绘图之生成饼状图的方法_php技巧

本文实例讲述了php绘图之生成饼状图的方法.分享给大家供大家参考.具体如下: 这里要实现的功能是人口分布比例图,由扇形组成一个圆,每个扇形颜色不一样. 复制代码 代码如下: <?php $array = array("北京"=>1925,"上海"=>2016,"广州"=>1256,"深圳"=>980); $arr_key = array_keys($array); $color = array()

使用Imagick绘图 文字换行 生成二维码例子

二维码的生成使用的QRcode库: http://phpqrcode.sourceforge.net/ 感觉最烦的就是文字的换行了, 处理函数来源于网络. 下面代码中的使用的函数不完整,完整代码上传 github 了 : https://github.com/zhoumengkang/imagick-demo 模板图和效果图如下: Imagick 绘图 文字换行 生成二维码 function createUserCard($username,$num,$desc,$id,$url){     /

MFC绘图基础 .

from:http://blog.csdn.net/leolee82/article/details/6992590 先认识一下MFC中的一些和绘图有关的结构体和类 1.点 (1)点结构POINT点数据结构POINT用来表示一点的x.y坐标: typedef struct tagPOINT { LONG x; LONG y; } POINT; (2)点类CPoint 点类CPoint为一个没有基类的独立类,封装了POINT结构,有成员变量x和y 其构造函数有5种: CPoint( ); CPoi

mfc绘图-mfc实现绘图,移动,删除放缩

问题描述 mfc实现绘图,移动,删除放缩 本人初学mfc,做一个绘图工具,实现绘图,以及图形的移动,删除,放缩 解决方案 http://download.csdn.net/detail/chuanxin8989/4674250 解决方案二: mfc依旧是经久不衰啊,每天都有人在学习 这个帖子不知道能帮到你不:mfc绘制 解决方案三: mfc依旧是经久不衰啊,每天都有人在学习 这个帖子不知道能帮到你不:mfc绘制

MFC绘图7--显示位图

1.将位图加载到内存DC中 2.将内存DC中的内容绘制到要显示位图的DC中 *MFC中没有直接用来加载位图的函数,可以使用WindowsAPI中的 LoadImage函数来加载位图,其原型如下: HANDLE LoadImage( HINSTANCE hinst, //位图实体句柄,若位图在硬盘或者资源文件 //中,则将该参数设为NULL LPCTSTR lpszName, //位图所在路径及文件名,或者资源名称 UINT uType, //加载位图的类型: //1.IMAGE_BITMAP /

MFC绘图2--画出其他颜色线条

CClientDC dc(this);//创建DC //1.创建画笔 CPen pen(PS_SOLID,1,RGB(255,0,0)); //2.将画笔选到设备描述表中并返回被替换的画笔指针 CPen *pOldPen=dc.SelectObject(&pen); //3.绘图 dc.MoveTo(m_ptOrigin); dc.LineTo(point); //4.将先前被替换的画笔重新选到设备描述表 dc.SelectObject(pOldPen);

MFC绘图1--使用不同DC

//使用HDC绘图 /* HDC hdc; hdc=::GetDC(m_hWnd); MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL); LineTo(hdc,point.x,point.y); ::ReleaseDC(m_hWnd,hdc); */ //所有跟窗口相关的操作都被封装在CWnd类中 //所有跟绘图相关的操作都被封装在CDC类中 //使用CDC绘图 /* CDC *pDC=CWnd::GetDC(); //此处直接使用CWnd类的GetDC,