GetObject 得 指定图形对象的信息

GetObject

 

该函数得到指定图形对象的信息,根据图形对象,函数把填充的 BITMAPDIBSECTIONLOGBRUSH,LOGFONT, 或 LOGPEN 结构体放入一个指定的缓冲区。

原型:

int GetObject(HGDIOBJ hgdiobj, int cbBuffer, LPVOID lpvObject); 

参数:

hgdiobj:[in] 图形对象句柄。 可以是a logical bitmap, a brush, a font, a palette, a pen, 或者调用CreateDIBSection生成的DIB。

cbBuffer: [in] 指定将要写到缓冲中的信息的字节数

lpvObject: [in] 缓冲指针,用以取回指定图形对象信息。 下表显示了由hgdiobj指定的信息类型和对应的缓冲区可接收的每种图形对象类型的。

 

 对象类型

 写入到 *lpvObject 中的数据

HBITMAP 

BITMAP

HBITMAP ,从CreateDIBSection 中返回

DIBSECTION ,如果cbBuffer 设置为 sizeof(DIBSECTION), 或者

BITMAP, 如果 cbBuffer 设置为 sizeof(BITMAP) 

HPALETTE 

逻辑调色板入口数,以WORD类型计算

HPEN 

LOGPEN 

HBRUSH 

LOGBRUSH 

HFONT 

LOGFONT 

 

   
   如果lpvObject 为NULL,返回值为指定图形对象写到缓冲中的信息的字节数

   对Windows CE 1.0 and 1.01:

      ·HPALETTE 对象不支持

      ·GetObject 用于DIB片段时,总是返回BITMAP 

返回值:

   如果函数调用成功,且lpvObject为一个有效指针,则返回值为贮存到缓冲区的字节数目;如果函数调用成功,且lprObject为Null,则返回值为需要容纳的贮存到缓冲区的信息字节数目。

   如果函数调用失败,则返回值为0。

   获取扩展错误信息,调用GetLastError.

说明:

   lpvObject参数指向的缓冲区一定要足够大以接收图形对象的信息。

   如果hgdiobj标识一个由GreateDIBSection创建的位图,且指定的缓冲区足够大,则GetObject函数返回一个DIBSECTION结构。另外,DIBSECTION中的BITMAP结构中的bmBits元素含有一个指向位图位值的指针。

   如果hgdiobj标识了一个通过其他途径创建的位图,则GetObject只返回位图的宽、高和颜色格式信息,但位图位值指针为NULL。只有位图为DIB时才可以访问他们的每一位。

   如果hgdiobj标识了一个逻辑调色板,则GetObject检索一个2字节的整数,该整数指定调色板中的项数,函数不检索定义调色板的LOGPALETTE结构,为检索有关调色板项的信息,应用程序可以调用GetPaletteEntries函数。

 

参考例子 :

HBITMAP hbFile = SHLoadImageFile(path);
BITMAP bmp;
GetObject(hbFilesizeof(bmp), &bmp);

posted on 2013-06-04 13:39  奔跑吧,蜗牛!  阅读(379)  评论(0编辑  收藏  举报

导航