Семейства Windows 3-Х, 9Х и 2000 используют аппаратно-независимый формат DIB (Device independent Bitmap), заимствованный из OS/2 с некоторыми изменениями. Структура заголовка показана в табл. А.1.
Таблица А. 1. Заголовок дар-файла для Windows
Смещение
поля |
Размер в байтах
|
Имя поля
|
Назначение
поля |
00 (ООН)
|
2 |
bfType |
Метка "ВМ"
|
02 (02h)
|
4 |
bfSize |
Размер файла
в байтах |
06 (06h)
|
2 |
Reserved |
Резервное
поле |
08 (08h)
|
2 |
Reserved |
Резервное
поле |
10(OAh) |
4 |
BfOffBits |
Смещение
области данных |
14(OEh) |
4 |
BiSize |
Размер области
информации |
18(12h) |
4 |
BiWidth |
Ширина рисунка
в точках |
22(16h) |
4 |
BiHeight |
Высота рисунка
в точках |
26(1Ah) |
2 |
Biplanes |
Количество
плоскостей (всегда 1) |
28(1Ch) |
2 |
BiBitCnt |
Количество
бит на точку |
30(1 Eh)
|
4 |
BiCompr |
Тип сжатия
данных |
34 (22h)
|
4 |
BiSizelmage |
Размер данных
в байтах |
38 (26h)
|
4 |
biXPels/M |
Количество
точек на метр по оси |
42 (2Ah)
|
4 |
biYPels/M |
Количество
точек на метр по оси |
46 (2Eh)
|
4 |
BiClrUsed |
Количество
используемых цветов |
50 (32h)
|
4 |
BiClrlmprt |
Количество
цветов в палитре |
Hазначение, содержание и применение основных полей заголовка будет эписано
в следующих подразделах, здесь мы опишем только три поля, эбычно не используемые
при выводе изображения на экран.
Поле biplanes указывает количество плоскостей в рисунке. Трудно сказать, какой целью его ввели. По крайней мере, при выводе рисунка на экран или на печать поле biplanes не используется.
Большинство рисунков получается путем оцифровки рукотворных картинок, фотографий, слайдов, кино или видеокадров. При выводе таких рисунков на печать важно знать размер оригинала. Необходимые для этого данные находятся в полях biXPels/M И biYPels/M, ГД6 Pels означает Picture Elements (элемент рисунка или просто точка). Если содержащиеся в них величины умножить на 25,4 и разделить на 1000, то получится разрешающая способность устройства, с помощью которого была оцифрована картинка. Например, при сканировании с разрешением 300 точек на дюйм по обеим координатам на один метр приходится приблизительно 300-1000/25,4 =11811 точек. Этому числу соответствует код 2Е23h, который и будет храниться в описываемых полях. Учитывая возможные ошибки вычислений, реальная величина может незначительно отличаться от вычисленной.