码迷,mamicode.com
首页 > 其他好文 > 详细

SelectObject

时间:2018-10-06 19:49:46      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:内存   create   load   dib   region   eof   object   .lib   sel   

[声明]

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);

 

SelectObject

标签:内存   create   load   dib   region   eof   object   .lib   sel   

原文地址:https://www.cnblogs.com/YiShen/p/9748116.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!