LONG biYPelsPerMeter: //0ED8 пикселов на метр.
//DWORD biClrUsed: //000000 - количество хранящихся после заголовка
// элементов палитры
DWORD biClrlmportant; //Количество разных цветов, действительно //используемых в рисунке. } BITMAPINFOHEADER
Заметим, что в палитровых режимах между заголовком и изображением находится bi Cl rUsed трех- или четырехбайтовых элементов палитры. Элемент палитры номер i определяет действительный цвет точки с кодом цвета, равным i. Если поле bi Cl rUsed равно нулю, то либо изображение было сохранено не в палитровом режиме, либо в файл включается максимально возможное число элементов палитры. Из заданных bi Cl rUsed цветов только bi Cl г Important цветов действительно используются в рисунке.
Поля biXPelsPerMeter и bi YPel sPerMeter, видимо, предназначены для того, чтобы при помощи масштабирования обеспечить одинаковые линейные размеры картинки на носителях изображения с разным разрешением. Использование же параметров для этой цели затруднено тем, что масштабирование может заметно исказить картинку. Поэтому при самостоятельном выводе изображения в файл эти поля можно не заполнять. Стандартный графический редактор не посчитает нулевые значения полей biXPelsPerMeter, bi YPel sPerMeter ошибкой и воспроизведет изображение корректно.
После заголовка в файле находятся тридцать кодов ff, задающих цвет десяти точек, и два нулевых байта, дополняющих длину строки до значения, кратного четырем. Но код ff ff ff задает белый цвет, а белым цветом у нас задана последняя строка. В конце файла находятся точки с цветом сОсОсО - это серый цвет первой строки. Таким образом, в файле .BMP длина строки всегда кратна четырем байтам, а данные о цвете точек хранятся, начиная с нижней строки растра. Это нужно помнить и всегда учитывать при работе. Например, при записи хранящейся Загрузка данных из ВМР-файла в ОЗУ картинки на диск ее размер (в байтах) нельзя получать вычислением выражения biWidth х biHeight х biBitCount/8, так как оно не учитывает дополнительных нулевых байт. Правильная формула имеет вид (bi Width х bi Height х х biBitCount + 31)/32 х 4.