什么是rgbReserved?

嗨,我想知道什么是rgbReservedRGBQuadArray ,为什么当我改变RGB颜色有一些丑陋的线条显示在图像上? 它与rgbReserved有关吗?

在内存中,一行位图通常以BBGGRR00BBGGRR00BBGGRR00 …格式存储,以便每个像素将占用正好四个字节或32位。 这简化了很多事情,并且可以加速计算和图像处理。 但是,如果位图以字节(范围为0到255)指定红色,绿色和蓝色强度,并且不包含Alpha通道,则每个像素只需要三个字节。 所以每个像素有第四个未使用的字节。 在像素结构中,它必须被命名。 鉴于可用成员被称为rgbRedrgbGreenrgbBluergbReserved感觉相当好。 也许rgbUnused会更适合,但是在Win32中有一个传统命名(当前)未使用的参数“保留”,如“保留供将来使用”。 事实上,如果你的应用程序使用包含alpha通道的透明位图,每个像素可能是BBGGRRAA的形式,所以你可以使用rgbReserved作为rgbAlpha

你的问题的后半部分不能按照现状来回答。 我不知道为什么你的代码不起作用。 也许像素强度溢出? 也许在某个地方有一些愚蠢的错误?

最后一点:如果您想知道Win32结构的成员是什么,您可以随时查阅官方文档 。