SelectObject
[声明]CPen* SelectObject( CPen* pPen ); CBrush* SelectObject( CBrush* pBrush ); virtual CFont* SelectObject( CFont* pFont ); CBitmap* SelectObject( CBitmap* pBitmap ); int SelectObject( CRgn* pRgn ); CGdiObject* SelectObject( CGdiObject* pObject ); [功能]函数功能:该函数选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象。 函数原型:HGDIOBJ SelectObject(HDC hdc,HGDIOBJ hgdiobj) [参数表]
[返回值]返回值:如果选择对象不是区域并且函数执行成功,那么返回值是被取代的对象的句柄;如果选择对象是区域并且函数执行成功,返回如下一值: SIMPLEREGION:区域由单个矩形组成; COMPLEXREGION:区域由多个矩形组成; NULLREGION:区域为空。 如果发生错误并且选择对象不是一个区域,那么返回值为NULL,否则返回HGDI_ERROR。 注释:该函数返回先前指定类型的选择对象,一个应用程序在它使用新对象进行绘制完成之后,应该用原始的缺省的对象替换新对象。 应用程序不能同时选择一个位图到多个设备上下文环境中。 ICM:如果被选择的对象是画笔或笔,那么就执行颜色管理。 速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:wingdi.h;库文件:gdi32.lib。 [范例]HDC hdc=GetDC(hwnd); HDC memdc=CreateCompatibleDC(hdc); RECT rc; BITMAP bmp; HBITMAP holdbmp,hbmp=LoadBitmap(hInstDVBRes,MAKEINTRESOURCE(IDB_CLOCK));//从资源加载位图 holdbmp=(HBITMAP)SelectObject(memdc,hbmp);//这里把hbmp的位图选择到兼容DC memdc,之后这个兼容DC就拥有和 //hbmp同样大小的绘图区域,注意超出位图返回的GDI输出都是无效的. GetObject(hbmp,sizeof(BITMAP),&bmp);//这里获取位图的大小信息,事实上也是兼容DC绘图输出的范围 SetRect(&rc,0,0,bmp.bmWidth,bmp.bmHeight); DrawText(memdc,"Center Line Text" -1,&rc,DT_VCENTER|DT_SINGLELINE|DT_CENTER);//在兼容DC中间位置输出字符串 //这样以来我们就相当于把hbmp这个位图加上了文字标注,我们可以把这个增加了文字标注的位图保存起来.一个简单的图像处理基本就OK了. SelectObject(memdc,holdbmp);//复原兼容DC数据. DeleteDC(memdc); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |