GetDIBits

【勇芳软件工作室】汉化HomePreviousNext

GetDIBits函数检索指定位图的位,并使用指定的格式将它们复制到缓冲区中。

int GetDIBits

HDC 【HDC】,//设备上下文的句柄
HBITMAP 【骨形态发生蛋白】,//处理位图
UINT 【uStartScan】,//第一条扫描行设置在目标位图中
UINT 【cScanLines】,//要复制的扫描行数
LPVOID 【lpvBits】,//位图位数组的地址
LPBITMAPINFO 【LPBI】,//具有位图数据的结构地址
UINT 【uUsage】// RGB或调色板索引
); 

参数

【HDC】

标识设备上下文。

【骨形态发生蛋白】

标识位图。

【uStartScan】

指定要检索的第一条扫描线。

【cScanLines】

指定要检索的扫描线数。

【lpvBits】

指向缓冲区以接收位图数据。如果此参数为NULL,则该函数将位图的维度和格式传递给【LPBI】参数指向的BITMAPINFO结构。

【LPBI】

指向BITMAPINFO结构,指定与设备无关的位图(DIB)数据的所需格式。

【uUsage】

指定bmiColors结构bmiColors成员的格式。它必须是以下值之一:

含义
DIB_PAL_COLORS颜色表应由当前逻辑调色板中的16位索引阵列组成。
DIB_RGB_COLORS颜色表应包含文字红,绿,蓝(RGB)值。

返回值

如果【lpvBits】参数为非NULL且函数成功,则返回值是从位图复制的扫描行数。

Windows 95:

如果【lpvBits】参数为NULL且GetDIBits成功填充BITMAPINFO结构,则返回值是位图中扫描行的总数。

Windows NT:

如果【lpvBits】参数为NULL并且GetDIBits成功填充BITMAPINFO结构,则返回值不为零。

如果函数失败,返回值为零。

备注

如果DIB的请求格式与其内部格式匹配,则会复制位图的RGB值。如果所请求的格式与内部格式不符,则合成颜色表。下表描述了为每种格式合成的颜色表。

含义
1_BPP颜色表由黑色和白色条目组成。
4_BPP色表由与标准VGA调色板相同的颜色混合组成。
8_BPP颜色表由GDI定义的256种颜色的一般混合。(包含在这256种颜色中,是默认逻辑调色板中的20种颜色。)
24_BPP没有颜色表返回。

如果【lpvBits】参数是有效的指针,则必须初始化BITMAPINFOHEADER结构的前六个成员以指定DIB的大小和格式。请注意,通过将高度设置为正数来指定自底向上的DIB,而通过将高度设置为负数来指定自顶向下的DIB。位图的颜色表将附加到BITMAPINFO结构。

如果【lpvBits】为NULL,则GetDIBits将检查【LPBI。】指向的第一个结构的第一个成员。该成员必须指定BITMAPCOREHEADERBITMAPINFOHEADER结构的大小(以字节为单位)。该函数使用指定的大小来确定剩余成员应如何初始化。

如果【lpvBits】为NULL,并且BITMAPINFO的位计数成员初始化为零,则GetDIBits将填充BITMAPINFOHEADERBITMAPCOREHEADER而不显示颜色表。该技术可用于查询位图属性。

当应用程序调用此函数时,不得将【骨形态发生蛋白】参数标识的位图选择到设备上下文中。

自下而上的DIB的起源是位图的左下角;自顶向下的DIB的原点是左上角。

也可以看看

BITMAPCOREHEADER, BITMAPINFO, BITMAPINFOHEADER, SetDIBits