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:
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.
![]()
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:
Figura 3 Mapa de bits de arriba hacia abajo
![]()
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.