Winapi CreateDIBSection返回的ppvBits的大小是多少?

Winapi CreateDIBSection返回的ppvBits的大小是多少?,winapi,Winapi,我正试图捕捉屏幕。我调用CreateDIBSection,使用BITMAPINFO初始化屏幕尺寸,平面数=1,bpp=32,模式=rgb。然后它返回一个指向ppvBits中位图数据的指针。但是如何确定缓冲区中有多少字节?它没有为我填写biSizeImage。我应该从bpp和维度计算它吗?类似于width*height*(bpp/8)?BitMapInfo头文件的文档-即从一行到下一行的字节数 对于未压缩的RGB格式,最小跨距始终为图像 以字节为单位的宽度,四舍五入到最接近的DWORD。你可以使用

我正试图捕捉屏幕。我调用
CreateDIBSection
,使用
BITMAPINFO
初始化屏幕尺寸,平面数=1,bpp=32,模式=rgb。然后它返回一个指向
ppvBits
中位图数据的指针。但是如何确定缓冲区中有多少字节?它没有为我填写
biSizeImage
。我应该从bpp和维度计算它吗?类似于
width*height*(bpp/8)

BitMapInfo头文件的文档-即从一行到下一行的字节数

对于未压缩的RGB格式,最小跨距始终为图像 以字节为单位的宽度,四舍五入到最接近的DWORD。你可以使用 计算步幅的公式如下:

步幅=(((双宽度*双比特计数)+31)和~31)>>3)

要计算位图所需的总字节数,请将跨距乘以行数

请注意位图行需要DWORD对齐-这就是步幅计算向上舍入的原因