为什么颠簸存放?

时间:2011-12-01 18:07:00

标签: windows image legacy bmp

为什么BMP图像是颠倒存储和零填充的,所以它们是四字节对齐的?

2 个答案:

答案 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?