2011-12-01 103 views
14

爲什麼BMP圖像顛倒存儲並填零,所以它們是四字節對齊的?爲什麼bmps倒過來存儲?

+0

的可能重複[ 「步幅」,在System.Drawing.Bitmap構造爲什麼必須是4的倍數? ](http://stackoverflow.com/questions/2185944/why-must-stride-in-the-system-drawing-bitmap-constructor-be-a-multiple-of-4) –

+1

http://support.microsoft .com/kb/q81498 /聲稱顛倒性是向後兼容Presentation Manager的人爲因素,這意味着它是IBM爲OS/2所做的。 –

+2

爲了與OS/2 Presentation Manager兼容,它們是顛倒的。它實際上可以是,頂線第一個位圖有一個負高度。 –

回答

28

下面是從彼佐爾德報價:

所以,在的DIB,圖像的底行是文件的第一行, 和圖像的最上面一行是文件的最後一行。這是 被稱爲自下而上的組織。因爲這個組織是不直觀的,所以你可能會問爲什麼這樣做。

那麼,這一切都可以追溯到OS/2演示文稿管理器。有人在 IBM決定PM中的所有座標系(包括那些用於窗口,圖形和位圖的 )都應該一致。這引發了一場關於 的爭論:大多數人,包括曾與 全屏幕文本編程或窗口環境合作的程序員,都認爲 的垂直座標增加,並沿着屏幕增加。然而, 核心計算機圖形程序員從 接近視頻顯示的角度來源於解析幾何的數學。 這涉及一個矩形(或笛卡爾)座標系統,其中 增加的垂直座標在空間上升。

總之,數學家贏了。 PM中的所有內容都有一個包含窗口座標的左下角原點 。這就是DIBs 如何成爲這種方式。

來源:查爾斯Petzold的,Windows編程第五版,第15章

+2

有趣的是,他們保持DIB的這種表示形式,但將其更改爲窗口座標,重新引入不一致性。 –

相關問題