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对齐-这就是步幅计算向上舍入的原因