GetObject() SelectObject()

GetObject函数用于从指定的图形对象中获取信息,原型如下:

int GetObject(
  HGDIOBJ hgdiobj,  // handle to graphics object
  int cbBuffer,     // size of buffer for object information
  LPVOID lpvObject  // buffer for object information
);

  

其中

参数hgdiobj是图形对象的句柄,图形对象可以是如下几种:逻辑位图、刷子、字体、调色板、画笔或者由函数CreateDIBSection创建的设备无关位图;

参数cbBuffer是即将写入到缓冲区中的图形对象信息的字节数;

参数lpvObject是指向接收图形对象信息的缓冲区的指针,下表是每一种图形对象对应获取到的缓冲区中的信息;

关于返回值:

  1. 当函数执行成功且参数lpvObject为NULL时,返回值是保存获取的信息的缓冲区需要的字节数;
  2. 当函数执行成功且参数lpvObject是有效地指针时,返回值是存储到缓冲区中的数据的字节数;
  3. 当函数执行失败时,返回值是0。

 

		GetObject(hBitmap,sizeof(BITMAP),&Bitmap);

		cxSource=Bitmap.bmWidth;       

		cySource=Bitmap.bmHeight;








函数简介编辑

函数功能:该函数得到指定图形对象的信息,根据图形对象,函数把填满的或结构,或表项(用于逻辑调色板)数目放入一个指定的缓冲区。
函数原型:int GetObject(HGDIOBJ hgdiobj, int cbBuffer, LPVOID lpvObject);
参数:
hgdiobj:指向感兴趣的图形对象的句柄,它可以是这样的一个句柄:一个逻辑位图、一个刷子、一种字体、一个调色板、笔或通过调用 CreateDIBsection函数创建的与设备无关位图。
cbBuffer:指定将要写到缓冲区的信息的字节数目。
lpvObject:指向一个缓冲区的 指针,该缓冲区将要检索指定图形对象的信息。
下面列出的是缓冲区为每种图形对象类型可接收的信息和类型,可用hgdiobj来指定,写入*lpvObject: HBITMAP BITMAP。
HBITMAP:如果cbBuffer被设置为sizeof(DIBSECTION)或sizeof(BITMAP),则从对CreatDIBSection函数的DIBSECTION调用中返回。
HPALETTE:逻辑调色板入口数的WORD数目。
HPEN:从对 ExtCreatePen函数的LXTLOGPEN调用中返回。
HPENLOGPEN; HBRUSH LOGBRUSH; HFONT LOGFONT
如果lpvObject参数为Null,则函数返回值为指定图形对象需要把信息贮存到缓冲区的字节数目。
返回值: 如果 函数调用 成功,且lpvObject为一个有效指针,则返回值为贮存到缓冲区的字节数目;如果函数调用成功,且lprObject为Null,则返回值为需要容纳的贮存到缓冲区的信息字节数目;如果函数调用失败,则返回值为0。
Windows NT:若想获得更多错误信息,可调用GetLastError函数。
注释:lpvObject参数指向的缓冲区一定要足够大以接收图形对象的信息。
如果hgdiobj标识一个由 调用CreateDIBSection创建的位图 ,且指定的缓冲区足够大,则GetObject函数返回一个DIBSECTION结构。另外,DIBSECTION中的BITMAP结构中的bmBits元素含有一个指向位图位值的 指针
如果hgdiobj标识了一个 通过其他途径创建的位图 ,则GetObject只返回位图的宽、高和颜色格式信息,通过调用 GetDIBits GetBitmapBits 函数可以得到位置的位值。
如果hgdiobj标识了一个 逻辑调色板 ,则GetObject检索一个2字节的整数,该整数指定调色板中的项数,函数不检索定义调色板的LOGPALETTE结构,为检索有关调色板项的信息,应用程序可以调用 GetPaletteEntries 函数。
Windows CE:在Windows CE 1.0中,当用在DIB上中,GetObject总返回一个BITMAP。Windows CE 1.0不支持lpvObject参数的HPALETTE值。此函数在Windows CE 2.0与在Windows桌面上一样。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:wingdi.h;库文件:gdi32.lib;Unicode:在Windows NT上实现为Unicode和ANSI两种版本。
















SelectObject()函数详解

SelectObject 
把一个对象(位图、画笔、画刷等)选入指定的设备描述表。新的对象代替同一类型的老对象。 

HGDIOBJ  SelectObject(
   HDC  hdc,          // handle to DC
   HGDIOBJ  hgdiobj   // handle to object
);

 

参数 

  1. hdc 设备描述表句柄(要载入的设备描述表句柄)
  2. hgdiobj 选择要载入的对象的句柄

但该对象的句柄必须使用以下函数创建才有效:

Bitmap(位图)          CreateBitmap, CreateBitmapIndirect, 
                            CreateCompatibleBitmap, CreateDIBitmap, 
                            CreateDIBSection 
Brush(画刷)           CreateBrushIndirect, eateDIBPatternBrush,  
                            CreateDIBPatternBrushPt, CreateHatchBrush,  
                            CreatePatternBrush, CreateSolidBrush 
Font(字体)              CreateFont, CreateFontIndirect 


Pen(画笔)               CreatePen, CreatePenIndirect 


Region(区域)             CombineRgn, CreateEllipticRgn,  
                               CreateEllipticRgnIndirect,  
                               CreatePolygonRgn, CreateRectRgn,  
                               CreateRectRgnIndirect 

返回值:如果选择对象不是区域并且函数执行成功,那么返回值是被取代的对象的句柄;如果选择对象是区域并且函数执行成功,返回如下一值;
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值