为什么BMP图像是颠倒存储和零填充的,所以它们是四字节对齐的?
答案 0 :(得分:30)
以下是Petzold的一句话:
因此,在DIB中,图像的底行是文件的第一行, 并且图像的顶行是文件中的最后一行。这是 称为自下而上的组织。因为这个组织是 违反直觉,你可能会问为什么这样做。
嗯,这一切都可以追溯到OS / 2 Presentation Manager。有人在 IBM决定PM中的所有坐标系统 - 包括那些 窗口,图形和位图应该是一致的。这激起了一个 辩论:大多数人,包括曾与之合作的程序员 全屏文本编程或窗口环境,用术语来思考 在屏幕上增加的垂直坐标。然而, 硬核计算机图形程序员接近视频显示器 一个源于解析几何的数学的视角。 这涉及矩形(或笛卡尔)坐标系 增加的垂直坐标在空间中增加。
简而言之,数学家赢了。 PM中的所有东西都背负着一个 左下角原点,包括窗口坐标。这就是DIB的方式 就是这样。
来源:Charles Petzold, Windows第5版编程,第15章。
答案 1 :(得分:-4)
它们相应地存储在显示器坐标系中。 (0,0)位于左上角。 X(对应宽度)从左到右。 Y(对应于高度)从上到下。
关于“4字节问题”,请参阅Why must "stride" in the System.Drawing.Bitmap constructor be a multiple of 4?