Точечные рисунки должны сохраняться в файле, который использует установленный формат файла точечной графики и присвоенное имя с тремя символами расширения .bmp. Установленный формат файла точечной графики состоит из структуры BITMAPFILEHEADER, сопровождаемой структурой BITMAPINFOHEADER, BITMAPV4HEADER или BITMAPV5HEADER. Массив структур RGBQUAD (также называемый таблицей цветов) следует за растровой информационной заголовочной структурой. За таблицей цветов следует второй массив индексов в таблице цветов (фактические данные точечного рисунка.
Формат файла точечной графики показывается на нижеследующей иллюстрации.
Windows 95, Windows NT 4.0: Замените структуру BITMAPINFOHEADER на структуру BITMAPV4HEADER.
Windows 98/Me, Windows 2000/XP: Замените структуру BITMAPINFOHEADER на структуру BITMAPV5HEADER.
Члены структуры BITMAPFILEHEADER идентифицируют файл; задают размер файла, в байтах; и устанавливают смещение от первого байта в заголовке до первого байта данных точечного рисунка. Члены структуры BITMAPINFOHEADER, BITMAPV4HEADER или BITMAPV5HEADER определяют ширину и высоту точечного рисунка, в пикселях; цветовой формат ( число цветовых плоскостей и битов цвета на пиксель) устройства отображения, на котором создавался точечный рисунок; были ли данные точечного рисунка сжаты перед сохранением и использованный тип сжатия ; число байтов данных точечного рисунка; разрешающая способность устройства отображения, на котором создавался точечный рисунок; и число цветов, представленных в данных. Структуры RGBQUAD устанавливают RGB значения интенсивности для каждого из цветов в палитре устройства.
Массив индексов цвета связывает цвет, в форме индексов в структуре RGBQUAD с каждым пикселем в точечном рисунке. В соответствии с этим, число битов в массиве индексов цвета равняется числу пикселей, которое соответствует числу битов необходимых для индексирования структуры RGBQUAD. Например, 8x8 черно-белый точечный рисунок имеет массив индексов цвета 8 * 8 * 1 = 64 бита, потому что один бит необходим, чтобы индексировать два цвета. Рисунок Redbrick.bmp, упомянутый в статье О точечных рисунках, является 32x32 точечным рисунком с 16 цветами; его массив индексов цвета - 32 * 32 * 4 = 4096 битов потому что четыре бита индексируют 16 цветов.
Чтобы создать массив индексов цвета для нисходящего точечного рисунка, начните с верхней строки в точечном рисунке. Индекс RGBQUAD для цвета крайнего левого пикселя - первые n битов в массиве индексов цвета (где n - число битов, которое необходимо, чтобы обозначить все структуры RGBQUAD). Цвет следующего пикселя справа - следующие n битов в массиве, и т.д. После того, как Вы достигните крайнего справа пикселя в строке, продолжаете с крайнего левого пикселя в строке ниже. Продолжайте до тех пор, пока не закончите полностью обрабатывать точечный рисунок. Если это - идущий снизу вверх точечный рисунок, начните с нижней строки точечного рисунка вместо верхней строки, все также обрабатывая слева направо и продолжайте до верхней строки точечного рисунка.
Ниже показан шестнадцатеричный вывод данных, которые содержит файл Redbrick.bmp.
0000
42 4d 76 02 00 00 00 00
00 00 76 00 00 00 28 00 |
Таблица ниже показывает байты данных, связанные со структурами в файле точечной графики.
Структура | Байты соответствия |
---|---|
BITMAPFILEHEADER |
0x00 – 0x0D |
BITMAPINFOHEADER |
0x0E – 0x35 |
Массив RGBQUAD |
0x36 – 0x75 |
Массив индексов цвета |
0x76 – 0x275 |