什么是rgbReserved?

4

你好,我想知道在RGBQuadArray中的rgbReserved是什么意思,以及当我改变RGB颜色时,为什么图像上会出现一些丑陋的线条?这是否与rgbReserved有关?

1个回答

11
在内存中,位图的一行通常以BBGGRR00BBGGRR00BBGGRR00的格式存储,以便每个像素恰好占用四个字节或32位。这简化了很多事情,并且可以加快计算和图像处理速度。但是,如果位图将红色、绿色和蓝色强度指定为字节(范围为0..255),并且不包含alpha通道,则每个像素仅需要三个字节。因此,每个像素有一个未使用的第四个字节。在像素结构中,它必须被命名为某些东西。考虑到可用成员被称为rgbRedrgbGreenrgbBluergbReserved感觉相当合适。也许rgbUnused更加合适,但在Win32中,有一种传统,即将(目前)未使用的参数命名为“Reserved”,例如“保留供将来使用”。实际上,如果您的应用程序使用包含alpha通道的透明位图,则每个像素可能采用BBGGRRAA的形式,因此可以将rgbReserved用作rgbAlpha
至于您问题的后半部分,不能直接回答。我不知道为什么您的代码不起作用。也许像素强度溢出了?也许有一些愚蠢的错误?
最后一点提示:如果您想知道Win32结构的成员是什么,可以随时查阅官方文档

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接