BitmapinfoHeader BiHeight ist doppelt so hoch wie ich es erwarte
Frage
Ich schreibe eine Anwendung in C, um Windows -Icon -Dateien (ICO) zu analysieren.
Wenn ich in der las BITMAPINFOHEADER
Struktur für einen vorhandenen Icon -Eintrag enthalten alle Variablen innerhalb der Strukturen, die erwartet werden, mit Ausnahme dessen biHeight
, was die Höhe in Pixel des Bildes enthalten sollte, ist immer doppelt so hoch wie es sein sollte.
Also zum Beispiel, wenn ich ein 64x64 -Symbol habe, biWidth
ist 64, aber aber biHeight
ist 128.
Ist das erwartete Verhalten? Dies ist mein erstes Mal, dass ich mich damit befasst habe BITMAPINFOHEADER
.
Ich bin hauptsächlich aus dem operiere MSDN -Artikel über BitmapinfoHeader.
Lösung
Ja, das ist normal. Es ist die zusätzliche Höhe der "und" Bitmap -Maske "und der" XOR "-Bitmap -Maske. Für jedes normale Symbol ist es einfach 2x die Symbolhöhe. (Diese Masken werden nicht mehr für 32-Bit-Ikonen verwendet; sie sind ein Überbleibsel.) Teilen Sie einfach um zwei.