Here's a quote from Petzold:
So, in DIBs, the bottom row of the image is the first row of the file,
and the top row of the image is the last row in the file. This is
called a bottom-up organization. Because this organization is
counterintuitive, you may ask why it's done this way.
Well, it all goes back to the OS/2 Presentation Manager. Someone at
IBM decided that all coordinate systems in PM—including those for
windows, graphics, and bitmaps—should be consistent. This provoked a
debate: Most people, including programmers who have worked with
full-screen text programming or windowing environments, think in terms
of vertical coordinates that increase going down the screen. However,
hardcore computer graphics programmers approach the video display from
a perspective that originates in the mathematics of analytic geometry.
This involves a rectangular (or Cartesian) coordinate system where
increasing vertical coordinates go up in space.
In short, the mathematicians won. Everything in PM was saddled with a
bottom-left origin, including window coordinates. And that's how DIBs
came to be this way.
Source: Charles Petzold, Programming for Windows 5th Edition, Chapter 15.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…