2011-12-01 17 views
14

¿Por qué las imágenes BMP se almacenan al revés y sin relleno para que estén alineadas en cuatro bytes?¿Por qué los bmps están almacenados al revés?

+0

posible duplicado de [¿Por qué tiene "paso" en el constructor System.Drawing.Bitmap ser un múltiplo de 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/afirma que el upsidedownness es un artefacto de ser compatible con Presentation Manager, lo que significa que es algo que IBM hizo para OS/2. –

+2

Están invertidos para compatibilidad con OS/2 Presentation Manager. En realidad, puede ser que los primeros mapas de bits de la línea superior tengan una altura negativa. –

Respuesta

28

He aquí una cita de Petzold:

Así, en DIB, la fila inferior de la imagen es la primera fila del archivo, y la fila superior de la imagen es la última fila en el archivo. Esta es llamada organización ascendente. Debido a que esta organización es contraintuitiva, puede preguntar por qué se hace de esta manera.

Bueno, todo se remonta al OS/2 Presentation Manager. Alguien en IBM decidió que todos los sistemas de coordenadas en PM, incluidos los de ventanas, gráficos y mapas de bits, deberían ser coherentes. Esto provocó un debate sobre : la mayoría de las personas, incluidos los programadores que han trabajado con en entornos de programación de texto a pantalla completa o ventanas, piensan en los términos de coordenadas verticales que aumentan al bajar la pantalla. Sin embargo, los programadores gráficos de computadora hardcore se acercan a la pantalla de video desde una perspectiva que se origina en las matemáticas de la geometría analítica. Esto implica un sistema de coordenadas rectangular (o cartesiano) donde aumentan las coordenadas verticales en el espacio.

En resumen, los matemáticos ganaron. Todo en PM se cargó con un origen inferior izquierdo , incluidas las coordenadas de la ventana. Y así es como los DIB llegaron a ser de esta manera.

Fuente: Charles Petzold, de programación para Windows 5ª Edición, Capítulo 15.

+2

Es interesante que conservaran esta representación para DIB pero la cambiaron por coordenadas de ventana, reintroduciendo la inconsistencia. –

Cuestiones relacionadas