DIB de arriba hacia abajo y de abajo hacia arriba

Top Down Vs Bottom Up Dibs

Extracto de la traducción de MSDN

Si es nuevo en la programación gráfica, podría pensar que un mapa de bits se almacena en direcciones de memoria en orden de arriba a abajo línea por línea. Sin embargo, no todos los mapas de bits se guardan de esta forma. En el sistema Windows, los mapas de bits DIB se guardan en dos direcciones diferentes: de arriba hacia abajo y de abajo hacia arriba.
Para el mapa de bits de abajo hacia arriba, la línea inferior del mapa de bits se guarda en la memoria y luego línea por línea hasta la parte superior del mapa de bits, por lo que la parte superior se guarda al final del espacio de memoria. Por lo tanto, el píxel de la esquina inferior izquierda de la imagen se guarda al comienzo del espacio de memoria. En GDI, todos los mapas de bits son mapas de bits de tipo ascendente. El diagrama esquemático para guardar el mapa de bits ascendente en la memoria física es el siguiente:



5 * 6 ARGB 32
Figura 1 Mapa de bits 5 * 6 ARGB de 32 bits



Nota: En aplicaciones prácticas, el tamaño de los no utilizados no es fijo, depende del hardware de la imagen o de algunos otros factores. En algunos casos, este valor puede ser 0.
imagen
Figura 2 El mapa de bits realmente guarda el estilo en la memoria, está al revés



Para los mapas de bits descendentes, el orden en el que se almacenan en la memoria se invierte. La línea superior del mapa de bits se guarda al principio del espacio de memoria, luego línea tras línea, y la línea inferior se guarda al final del espacio de memoria. Por lo tanto, la esquina superior izquierda de la imagen se guarda al comienzo del espacio de memoria. La programación de DirectDraw utiliza un mapa de bits de tipo descendente. El diagrama esquemático para guardar el mapa de bits descendente en la memoria física es el siguiente:
De arriba hacia abajo
Figura 3 Mapa de bits de arriba hacia abajo

imagen
Figura 4 El mapa de bits realmente guarda el estilo en la memoria, está en posición vertical

Esto representa dos métodos diferentes de compresión de imágenes, que se pueden configurar en la estructura del mapa de bits. Por ejemplo, si el miembro biHeight se establece en TRUE en el parámetro BITMAPINFOHEADER, significa tipo Bottom-Up; de lo contrario, es tipo Top-Down.