为什么BMP图像存储颠倒和零填充,所以他们是四字节alignment?
这是Petzold的一句话:
所以,在DIB中,图像的最下面一行是文件的第一行,图像的最上面一行是文件的最后一行。 这被称为自下而上的组织。 因为这个组织是违反直觉的,你可能会问为什么这样做。
那么,这一切都回到OS / 2演示文稿管理器。 IBM的某个人决定PM中的所有坐标系(包括窗口,图形和位图)都应该是一致的。 这激起了一场辩论:大多数人,包括曾经在全屏幕文本编程或窗口环境中工作过的程序员,都认为在垂直坐标方面增加了下来。 然而,硬核计算机图形程序员从一个视角出发,从解析几何的数学角度来看待视频显示。 这包括一个矩形(或笛卡尔)坐标系,增加垂直坐标在空间上升。
总之,数学家赢了。 PM中的所有东西都有一个左下角的原点,包括窗口坐标。 这就是DIB如何成为这种方式。
资料来源 :Charles Petzold, Windows编程第5版 ,第15章。
它们被相应地存储到一个显示坐标系中。 (0,0)位于左上角。 X(对应于宽度)从左到右。 Y(对应于高度)从上到下。
至于“4字节问题”,请参阅为什么在System.Drawing.Bitmap构造函数中必须“跨越”是4的倍数?