2011-04-28 14 views
6

Estoy escribiendo una aplicación en C para analizar los archivos de iconos de Windows (ICO).BITMAPINFOHEADER biHeight es el doble de lo que esperaba

Cuando leo en la estructura BITMAPINFOHEADER una entrada de icono existente, todas las variables dentro de la estructura contienen valores que se esperan, excepto que biHeight, que debe contener la altura en píxeles de la imagen, es siempre el doble de lo que debiera ser.

Así, por ejemplo si tengo un icono de 64x64, biWidth es 64, pero es biHeight 128.

¿Este comportamiento esperado? Esta es la primera vez que trato con BITMAPINFOHEADER.

Principalmente estoy operando desde el MSDN article on BITMAPINFOHEADER.

Respuesta

8

Sí, esto es normal. Es la altura agregada de la máscara de mapa de bits "Y" y la máscara de mapa de bits "XOR", por lo que para cualquier icono normal, es simplemente 2X la altura del icono. (Esas máscaras ya no se usan para iconos de 32 bits; son un vestigio). Solo divide por dos.

+0

¡Muchas gracias por su rápida e informativa respuesta! – Michael

+1

El icono debe contener una máscara XOR válida, las personas no se ejecutan en 32bpp el 100% del tiempo (O incluir imágenes a menor profundidad de bits también) – Anders

+0

Ver el [segundo párrafo en esta sección de Wikipedia] (http: //en.wikipedia .org/wiki/ICO_% 28file_format% 29 # Icon_resource_structure) para una confirmación oficial de esta respuesta. – sschuberth

Cuestiones relacionadas