Точечный рисунок имеет четыре основных типа заголовка:
Эти четыре типа заголовков точечного рисунка, отличаются друг от друга членом структуры Size, который - первое двойное слово (DWORD) в каждой из структур.
Структура BITMAPV5HEADER - дополнение структуры BITMAPV4HEADER, который является дополнением структуры BITMAPINFOHEADER. Однако, BITMAPINFOHEADER и BITMAPCOREHEADER имеют общий с другими заголовочными структурами точечного рисунка только член Size.
Форматы BITMAPCOREHEADER и BITMAPV4HEADER были заменены форматами BITMAPINFOHEADER и BITMAPV5HEADER, соответственно. Форматы BITMAPCOREHEADER и BITMAPV4HEADER представлены для полноты и совместимости вниз.
Формат DIB имеет следующие элементы (для получения дополнительной информации, смотри статью Сохранение точечного рисунка):
Таблица цветов описывает, какие значения пикселя соответствуют значениям цвета RGB. RGB - модель для того, чтобы характеризовать цвета, которые созданы излучением света.
Данные конфигурации (profile data) отсылают к любому имени файла конфигурации (связанная конфигурация) или к фактическим битам конфигурации (вложенная конфигурация). Формат файла размещает данные конфигурации в конце файла. Данные конфигурации размещаются только после таблицы цветов (если имеется). Однако, если функция получает сжатый точечный рисунок DIB, данные конфигурации идут после битов точечного рисунка, подобно формату файла.
Данные конфигурации существуют только для структур BITMAPV5HEADER, где член bV5CSType - PROFILE_LINKED или PROFILE_EMBEDDED. Для функций, которые получают, сжатые форматы DIB, данные конфигурации идут после данных точечного рисунка.
Палеттизированное устройство - это любое устройство, которое использует палитры, чтобы назначать цвета. Классический пример палеттизированного устройства - вывод на экран данных, выполняющийся с глубиной цвета в 8 битов (то есть 256 цветов). Вывод на экран в этом режиме использует маленькую таблицу цветов, чтобы назначить цвета точечного рисунка. Цвета в точечном рисунке назначаются в наиболее точном соответствии цвету в палитре, которую устройство использует. Палеттизированное устройство не создает оптимальную палитру чтобы показать точечный рисунок; оно просто использует то, что находится в текущей палитре. Приложения несут ответственность за создание палитры и за выбор ее в системе. Вообще-то, 16-, 24-, и 32 - битовые на пиксель (bpp) точечные рисунки не содержат таблицы цветов (иначе называемых оптимальными палитрами для точечного рисунка); приложение несет ответственность за создание оптимальной палитры в этой ситуации. Однако, 16-, 24-, и 32 - битовые на пиксель (bpp) точечные рисунки могут содержать такие оптимальные таблицы цветов для показа на палеттизированных устройствах; в этой ситуации приложение должно создать только палитру, основанную на таблице цветов представленную в файле точечного рисунка.
Точечные рисунки, которые являются 1, 4, или 8 битовыми на пиксель (bpp), должны иметь таблицу цветов с максимальным размером, основанным на bpp. Максимальный размер для 1, 4, и 8 битовых на пиксель (bpp) точечных рисунков - это 2 в степени количества битов на пиксель (bpp). В соответствии с этим, точечный рисунок с 1 битом на пиксель (bpp) имеет максимум два цвета, 4 bpp точечный рисунок имеет максимум 16 цветов и 8 bpp точечный рисунок имеет максимум 256 цветов.
Точечные рисунки, которые являются 16-, 24- или 32 - битовыми на пиксель (bpp), не требуют таблиц цветов, но могут иметь их, чтобы задать цвета для палеттизированных устройств. Если таблица цветов присутствует в 16-, 24-, или 32 - битовых на пиксель (bpp) точечных рисунках, член структуры biClrUsed определяет размер таблицы цветов и эта таблица должна иметь столько же цветов, сколько определено в нем. Если biClrUsed равняется нулю, таблицы цветов нет.
Красная, зеленая и синяя маски битового поля для BI_BITFIELD точечных рисунков следует непосредственно за структурами BITMAPINFOHEADER, BITMAPV4HEADER и BITMAPV5HEADER. Структуры BITMAPV4HEADER и BITMAPV5HEADER содержат дополнительные члены для красной, зеленой и синей масок как указано ниже.
Член | Предназначение |
---|---|
RedMask | Маска цвета, которая устанавливает красный компонент каждого пикселя, допустимого только в том случае, если член структуры Compression, устанавливается в BI_BITFIELDS. |
GreenMask | Маска цвета, которая устанавливает зеленый компонент каждого пикселя, допустимого только в том случае, если член структуры Compression, устанавливается в BI_BITFIELDS. |
BlueMask | Маска цвета, которая устанавливает синий компонент каждого пикселя, допустимого только в том случае, если член структуры Compression, устанавливается в BI_BITFIELDS. |
Когда член biCompression структуры BITMAPINFOHEADER устанавливается в BI_BITFIELDS, а функция получает параметр типа LPBITMAPINFO, маски цвета будут следовать непосредственно за заголовком. Таблица цветов, если имеется, будет следовать за масками цвета. Структура BITMAPCOREHEADER точечных рисунков не поддерживает маски цвета.
По умолчанию, данные точечного рисунка в его формате являются восходящими. Восходящими означает то, что первая строка развертки в данных точечного рисунка является последней строкой развертки показа на экране. Например, 0-ой пиксель 0-ой строки развертки данных точечного рисунка размером 10 на 10 пикселей, должен быть 0-ым пикселем 9-ой строки развертки отображаемого на экране или печатного изображения. Точечные рисунки формата кодирования длины серии (RLE) и BITMAPCOREHEADER не могут быть нисходящими точечными рисунками. Строки развертки выравниваются по границе двойного слова (DWORD), исключая точечные рисунки сжатые методом RLE. Они должны дополнять ширину строк развертки, в байтах, которые не являются нацело делимыми на четыре, исключая точечные рисунки сжатые методом RLE. Например, точечный рисунок 10 на 10 пикселей с 24 - битами на пиксель (bpp) будет иметь два байта дополнения в конце каждой строки развертки.