#c #winapi #icons #ico
#c #winapi #Значки #ico
Вопрос:
Я пишу приложение на C для анализа файлов значков Windows (ICO).
Когда я читаю в BITMAPINFOHEADER
структуре для существующей записи icon, все переменные внутри структуры содержат ожидаемые значения, за исключением того, что biHeight
, которое должно содержать высоту изображения в пикселях, всегда в два раза больше, чем должно быть.
Так, например, если у меня есть значок 64×64, biWidth
равно 64, но biHeight
равно 128.
Это ожидаемое поведение? Я впервые имею дело с BITMAPINFOHEADER
.
В основном я опираюсь на статью MSDN о BITMAPINFOHEADER.
Ответ №1:
Да, это нормально. Это добавленная высота растровой маски «И» и растровой маски «XOR», поэтому для любого обычного значка это просто в 2 раза больше высоты значка. (Эти маски больше не используются для 32-разрядных значков; они являются пережитком.) Просто разделите на два.
Комментарии:
1. Значок должен содержать допустимую маску XOR, пользователи не работают со скоростью 32 бит / с в 100% случаев (или также включают изображения с меньшей разрядностью)
2. Смотрите второй абзац в этом разделе Википедии для получения некоторого официального подтверждения этого ответа.