勇芳软件工作室.汉化:  Bitmaps > Bitmap Functions >

GetDIBits

Previous pageReturn to chapter overviewNext page

描述

 

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

 

C++ 语法

 

int GetDIBits(

__in HDC hdc,

__in HBITMAP hbmp,

__in UINT uStartScan,

__in UINT cScanLines,

__out LPVOID lpvBits,

__inout LPBITMAPINFO lpbi,

__in UINT uUsage

);

 

PowerBASIC 语法

 

FUNCTION GetDIBits( _

BYVAL hdc AS DWORD, _

BYVAL hbmp AS DWORD, _

BYVAL uStartScan AS DWORD, _

BYVAL cScanLines AS DWORD, _

BYREF lpvBits AS ANY, _

BYREF lpbi AS BITMAPINFO, _

BYVAL uUsage AS DWORD _

) AS LONG

 

参数

 

hdc

 

[in]处理设备上下文。

 

hbmp

 

[in]处理位图。这必须是一个兼容的位图(DDB)。

 

uStartScan

 

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

 

cScanLines

 

[in]指定要检索的扫描行数。

 

lpvBits

 

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

 

lpbi

 

[in/out]指向BITMAPINFO结构的指针,指定DIB数据的所需格式。

 

uUsage

 

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

 

含义

DIB_PAL_COLORS

颜色表应由当前逻辑调色板中的16位索引数组组成。

DIB_RGB_COLORS

颜色表应包含文字红,绿,蓝(RGB)值。

 

返回值

 

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

 

Windows 95/98 / Me:如果lpvBits参数为NULL且GetDIBits成功填充BITMAPINFO结构,则返回值是位图中扫描行的总数。

 

Windows NT / 2000 / XP / Vista / Windows 7:如果lpvBits参数为NULL且GetDIBits成功填充BITMAPINFO结构,则返回值不为零。

 

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

 

Windows NT / 2000 / XP / Vista / Windows 7:要获取扩展错误信息,请调用GetLastError.这可以是以下值。

 

含义

ERROR_INVALID_PARAMETER

一个或多个输入参数无效。

 

备注

 

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

 

含义

1_BPP

颜色表由黑色和白色条目组成。

4_BPP

色表由与标准VGA调色板相同的颜色混合组成。

8_BPP

颜色表由GDI定义的256种颜色的一般混合。(包含在这256种颜色中,是默认逻辑调色板中的20种颜色。)

24_BPP

没有颜色表返回。

 

如果lpvBits参数是有效的指针,则必须初始化BITMAPINFOHEADER结构的前六个成员以指定DIB的大小和格式。除了RLE压缩位图之外,扫描线必须在DWORD上对齐。

 

通过将高度设置为正数来指定自底向上的DIB,而通过将高度设置为负数来指定自顶向下的DIB。位图颜色表将附加到BITMAPINFO结构。

 

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

 

如果lpvBits为NULL,并且BITMAPINFO的位计数成员初始化为零,GetDIBits将填充BITMAPINFOHEADER结构或BITMAPCOREHEADER而不使用颜色表。该技术可用于查询位图属性。

 

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

 

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

 

引用文件 #INCLUDE Once

 

WinGdi.inc(包括Windows.inc)