Структура BITMAPINFOHEADER


Структура BITMAPINFOHEADER содержит информацию о размерах и цветовом формате аппаратно-независимого растрового формата (DIB).

Windows 95, Windows NT 4.0: Приложения могут использовать структуру BITMAPV4HEADER для добавления функциональных возможностей.

Windows 98/Me, Windows 2000/XP: Приложения могут использовать структуру BITMAPV5HEADER для добавления функциональных возможностей. Однако она используется только в функции CreateDIBitmap.

Синтаксис

typedef struct tagBITMAPINFOHEADER{
  DWORD  biSize; 
  LONG   biWidth; 
  LONG   biHeight; 
  WORD   biPlanes; 
  WORD   biBitCount; 
  DWORD  biCompression; 
  DWORD  biSizeImage; 
  LONG   biXPelsPerMeter; 
  LONG   biYPelsPerMeter; 
  DWORD  biClrUsed; 
  DWORD  biClrImportant; 
} BITMAPINFOHEADER, *PBITMAPINFOHEADER; 

Члены структуры

biSize

Определяет число байтов необходимое для структуры.

biWidth

Определяет ширину точечного рисунка, в пикселях.

Windows 98/Me, Windows 2000/XP: Если параметр biCompression - BI_JPEG или BI_PNG, член структуры biWidth устанавливает ширину развернутого  изображения из файла изображения формата JPEG или PNG , соответственно.

biHeight

Устанавливает высоту точечного рисунка, в пикселях. Если biHeight - положительное значение, точечный рисунок - восходящий аппаратно-независимый растровый формат (DIB), а его начало координат - левый нижний угол. Если biHeight - отрицательное значение, точечный рисунок - нисходящий аппаратно-независимый растровый формат (DIB), а его начало координат - левый верхний угол.

Если biHeight имеет отрицательное значение, которое указывает на нисходящий формат (DIB), параметр biCompression должен быть или BI_RGB или BI_BITFIELDS. Нисходящие растровые форматы (DIB) не могут сжиматься.

Windows 98/Me, Windows 2000/XP: Если biCompression - BI_JPEG или BI_PNG, член структуры biHeight  устанавливает высоту развернутого  изображения из файла изображения формата JPEG или PNG , соответственно.

biPlanes

Устанавливает число плоскостей целевого устройства. Это значение должно быть установлено в 1.

biBitCount

Устанавливает число битов на пиксель. Член biBitCount структуры BITMAPINFOHEADER обуславливает число битов, которые определяют каждый пиксель и максимальное число цветов в точечном рисунке. Этот член структуры должен быть одним из нижеперечисленных значений.

Значение Предназначение
0 Windows 98/Me, Windows 2000/XP: Число битов на пиксель задается или подразумевается форматом изображения PNG или JPEG.
1 Точечный рисунок является монохромным, а член bmiColors  структуры BITMAPINFO содержит две записи. Каждый бит в растровом массиве представляет пиксель. Если бит сброшен, пиксель отображается цветом первой записи в таблице bmiColors ; если бит установлен, пиксель имеет цвет второй записи в таблице.
4 Точечный рисунок имеет максимум 16 цветов, а член  bmiColors структуры BITMAPINFO содержит до 16 записей. Каждый пиксель в точечном рисунке представлен 4-битным индексом в таблице цветов. Например, если первый байт в точечном рисунке - 0x1F, он представляет два пикселя. Первый пиксель содержит цвет во второй записи таблицы, а второй пиксель содержит цвет в шестнадцатой записи таблицы.
8 Точечный рисунок имеет максимум 256 цветов, а член  bmiColors структуры BITMAPINFO содержит до 256 записей. В этом случае, каждый байт в массиве представляет одиночный пиксель.
16 Точечный рисунок имеет максимум 216 цветов. Если член biCompression  структуры BITMAPINFOHEADER равен BI_RGB, то член bmiColors  структуры BITMAPINFO имеет значение ПУСТО (NULL). Каждое слово (WORD) в массиве точечного рисунка представляет одиночный пиксель. Относительные интенсивности красного, зеленого и синего цвета представлены с пятью битами для каждого компонента цвета. Значение для синего находится в самых младших пяти битах, следующие пять битов для каждого  зеленого и красного цвета. Старший значащий бит не используется. Таблица цветов bmiColors используется для того, чтобы оптимизировать цвета, используемые на устройствах основной палитры, и должна содержать число записей, заданных членом biClrUsed  структуры BITMAPINFOHEADER.

Если член biCompression  структуры BITMAPINFOHEADER - BI_BITFIELDS, член структуры bmiColors содержит  три двойных слова (DWORD) маски цвета , которые, соответственно, определяют красную, зеленую и синюю компоненты  каждого пикселя. Каждое слово (WORD) в массиве точечного рисунка представляет одиночный пиксель.

Windows NT/Windows 2000/XP: Если член структуры biCompression равен  BI_BITFIELDS, то биты установленные в каждом двойном слове (DWORD)  маски , должен быть непрерывными и не должны перекрывать биты другой маски. Все биты в пикселе  использоваться не должны.

Windows 95/98/Me: Если член структуры biCompression равен  BI_BITFIELDS, то система поддерживает только ниже следующее 16 битовые (bpp) маски цвета: 5-5-5 16-битовых изображений, где синяя маска - 0x001F, зеленая маска - 0x03E0 и красная маска - 0x7C00; и 5-6-5 16-битовых изображений, где синяя маска - 0x001F, зеленая маска - 0x07E0 и красная маска - 0xF800.

24 Точечный рисунок имеет максимум 2 24 цветов, а член bmiColors структуры BITMAPINFO имеет значение ПУСТО (NULL). Каждый 3-байтовый триплет в массиве точечного рисунка представляет относительные интенсивности синего, зеленого и красного цвета, соответственно, для пикселя. Таблица цветов bmiColors  используется для того, чтобы оптимизировать цвета, используемые на устройствах основной палитры и должна содержать число записей, определяемых членом biClrUsed  структуры BITMAPINFOHEADER.
32 Точечный рисунок имеет максимум 232 цветов. Если член biCompression  структуры BITMAPINFOHEADER равен BI_RGB, член bmiColors  структуры BITMAPINFO имеет значение ПУСТО (NULL). Каждое двойное слово (DWORD) в массиве точечного рисунка представляет относительные интенсивности синего, зеленого и красного цвета, соответственно, для пикселя. Старший байт в каждом двойном слове (DWORD) не используется. Таблица цветов bmiColors  используется для того, чтобы оптимизировать цвета, используемые на устройствах основной палитры и должна содержать число записей, определяемых членом biClrUsed  структуры BITMAPINFOHEADER.

Если член biCompression  структуры BITMAPINFOHEADER равен BI_BITFIELDS, член структуры bmiColors содержит три двойных слова (DWORD) маски цвета , которые устанавливают компоненты красного, зеленого и синего цвета, соответственно, каждого пикселя. Каждое двойное слово (DWORD) в массиве точечного рисунка представляет одиночный пиксель.

Windows NT/ 2000: Если член структуры biCompression равен  BI_BITFIELDS, то биты, установленные в каждом двойном слове (DWORD)  маски, должны быть непрерывными и не должны перекрывать биты другой маски. Все биты в пикселе  использоваться не должны.

Windows 95/98/Me: Если член структуры biCompression равен  BI_BITFIELDS, то система поддерживает только ниже следующие 32 битовые (bpp) маски цвета: синяя маска - 0x000000FF, зеленая маска - 0x0000FF00 и красная маска - 0x00FF0000.

 

biCompression

Определяет тип сжатия для сжатого идущего снизу вверх точечного рисунка (идущий сверху вниз аппаратно-независимый растровый формат (DIB) не может сжиматься). Этот член структуры может быть одним из нижеперечисленных значений.

 

Значение Описание
BI_RGB Несжимаемый формат.
BI_RLE8 Формат с кодированием длины серий  (RLE) для точечных рисунков с 8 битами на пиксель (bpp). Этот сжатый формат - 2-байтовый формат, состоящий из байта числа элементов, сопровождаемого байтом, содержащим  индекс цвета. Подробную информацию см. в статье Сжатие точечного рисунка.
BI_RLE4 RLE формат для точечных рисунков с 4 битами на пиксель (bpp). Этот сжатый формат - 2-байтовый формат, состоящий из байта числа элементов, сопровождаемый двумя индексами цвета длиной в слово (DWORD). Подробную информацию см. в статье Сжатие точечного рисунка.
BI_BITFIELDS Определяет, что точечный рисунок не сжат и, что таблица цветов состоит из трех двойных слов (DWORD) маски цвета , которые задают красный , зеленый и синий компоненты цвета, соответственно, для каждого пикселя. Это правильно тогда, когда используются точечные рисунки с 16-и 32 - битами на пиксель (bpp).
BI_JPEG Windows 98/Me, Windows 2000/XP: Указывает на то, что изображение имеет формат JPEG.
BI_PNG Windows 98/Me, Windows 2000/XP: Указывает на то, что изображение имеет формата PNG.
 

biSizeImage

Устанавливает размер изображения, в байтах. Он может быть установлен в нуль для BI_RGB точечных рисунков.

Windows 98/Me, Windows 2000/XP: Если biCompression равен BI_JPEG или BI_PNG, то biSizeImage указывает размер формата изображения JPEG или буфера изображения формата PNG, соответственно.

biXPelsPerMeter

Устанавливает разрешающую способность по вертикали для принимающего устройства  точечного рисунка, в пикселях на метр. Приложение может использовать это значение, чтобы выбирать битовый образ из группы ресурсов, который лучше всего соответствует характеристикам текущего устройства.

biYPelsPerMeter

Устанавливает разрешающую способность по вертикали для принимающего устройства  точечного рисунка, в пикселях на метр.

biClrUsed

Устанавливает число  индексов цвета в таблице цветов, которые фактически используются точечным рисунком. Если это значение равняется нулю, точечный рисунок использует максимальное число цветов, соответствующих значению члена структуры biBitCount для  метода сжатия, заданного членом biCompression.

Если biClrUsed не нуль, а член структуры biBitCount - меньше чем 16, член структуры biClrUsed  устанавливает фактическое число цветов доступное графической машине или драйверу устройства. Если biBitCount  равен 16 или больше, член структуры biClrUsed  устанавливает размер используемый таблицей цветов для оптимизации  системных цветовых палитр. Если biBitCount равняется 16 или 32, оптимальная цветовая палитра следует непосредственно за тремя двойными словами (DWORD) маски.

Когда массив точечного рисунка следует непосредственно за структурой BITMAPINFO, это - сжатый точечный рисунок. На сжатые битовые образы ссылаются одиночным указателем. Сжатые точечные рисунки требуют, чтобы член структуры biClrUsed был или нулем или фактическим размером таблицы цветов.

biClrImportant

Устанавливает число индексов цвета, которые требуются чтобы показать на экране точечный рисунок. Если это значение равняется нулю, требуются все цвета .

Замечания

Структура BITMAPINFO объединяет структуру BITMAPINFOHEADER и таблицу цветов, чтобы обеспечить детальное определение размеров и цветов аппаратно-независимого растрового формата (DIB). Подробную информацию об аппаратно-независимых растровых форматах (DIB), см.  в статьях Не зависящие от устройства точечные рисунки и о структуре BITMAPINFO.

Приложение должно использовать информацию, сохраненную в члене структуры biSize, чтобы определить место таблицы цветов в структуре BITMAPINFO, как  указано ниже:

pColor = ((LPSTR)pBitmapInfo + (WORD)(pBitmapInfo->bmiHeader.biSize));

Windows 98/Me, Windows 2000/XP: Структура BITMAPINFOHEADER дополнена возможностью передавать как исходное изображение формата JPEG или PNG в функцию StretchDIBits.

Смотри также 

Обзор Точечные рисунки, Структуры, используемые точечными рисунками, BITMAPINFO, BITMAPV4HEADER, BITMAPV5HEADER, CreateDIBitmap, StretchDIBits

Размещение и совместимость BITMAPINFOHEADER

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

Нет

Заголовочный файл

 

- объявлено в

Wingdi.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz