На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

BITMAPINFOHEADER



The BITMAPINFOHEADER structure contains information about the dimensions and color format of a device-independent bitmap (DIB).

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


Members

biSize

Specifies the number of bytes required by the structure.

biWidth

Specifies the width of the bitmap, in pixels.

biHeight

Specifies the height of the bitmap, in pixels. If biHeight is positive, the bitmap is a bottom-up DIB and its origin is the lower left corner. If biHeight is negative, the bitmap is a top-down DIB and its origin is the upper left corner.

biPlanes

Specifies the number of planes for the target device. This value must be set to 1.

biBitCount

Specifies the number of bits per pixel. This value must be 1, 4, 8, 16, 24, or 32.

biCompression

Specifies the type of compression for a compressed bottom-up bitmap (top-down DIBs cannot be compressed). It can be one of the following values:

Value Description
BI_RGB An uncompressed format.
BI_RLE8 A run-length encoded (RLE) format for bitmaps with 8 bits per pixel. The compression format is a two-byte format consisting of a count byte followed by a byte containing a color index. For more information, see the following Remarks section.
BI_RLE4 An RLE format for bitmaps with 4 bits per pixel. The compression format is a two-byte format consisting of a count byte followed by two word-length color indices. For more information, see the following Remarks section.
BI_BITFIELDS Specifies that the bitmap is not compressed and that the color table consists of three doubleword color masks that specify the red, green, and blue components, respectively, of each pixel. This is valid when used with 16- and 32-bits-per-pixel bitmaps.


biSizeImage

Specifies the size, in bytes, of the image. This may be set to 0 for BI_RGB bitmaps.

biXPelsPerMeter

Specifies the horizontal resolution, in pixels per meter, of the target device for the bitmap. An application can use this value to select a bitmap from a resource group that best matches the characteristics of the current device.

biYPelsPerMeter

Specifies the vertical resolution, in pixels per meter, of the target device for the bitmap.

biClrUsed

Specifies the number of color indices in the color table that are actually used by the bitmap. If this value is zero, the bitmap uses the maximum number of colors corresponding to the value of the biBitCount member for the compression mode specified by biCompression.
If biClrUsed is nonzero and the biBitCount member is less than 16, the biClrUsed member specifies the actual number of colors the graphics engine or device driver accesses. If biBitCount is 16 or greater, then biClrUsed member specifies the size of the color table used to optimize performance of Windows color palettes. If biBitCount equals 16 or 32, the optimal color palette starts immediately following the three doubleword masks.

If the bitmap is a packed bitmap (a bitmap in which the bitmap array immediately follows the BITMAPINFO header and which is referenced by a single pointer), the biClrUsed member must be either 0 or the actual size of the color table.

biClrImportant

Specifies the number of color indices that are considered important for displaying the bitmap. If this value is zero, all colors are important.



Remarks

The BITMAPINFO structure combines the BITMAPINFOHEADER structure and a color table to provide a complete definition of the dimensions and colors of a DIB. For more information about DIBs, see the description of the BITMAPINFO data structure.
An application should use the information stored in the biSize member to locate the color table in a BITMAPINFO structure, as follows:

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


Windows supports formats for compressing bitmaps that define their colors with eight or four bits per pixel. Compression reduces the disk and memory storage required for the bitmap. The following paragraphs describe these formats.
When the biCompression member is BI_RLE8, the bitmap is compressed by using a run-length encoding (RLE) format for an 8-bit bitmap. This format can be compressed in encoded or absolute modes. Both modes can occur anywhere in the same bitmap.

· Encoded mode consists of two bytes: the first byte specifies the number of consecutive pixels to be drawn using the color index contained in the second byte. In addition, the first byte of the pair can be set to zero to indicate an escape that denotes an end of line, end of bitmap, or delta. The interpretation of the escape depends on the value of the second byte of the pair, which can be one of the following:

Value Meaning
0 End of line.
1 End of bitmap.
2 Delta. The two bytes following the escape contain unsigned values indicating the horizontal and vertical offsets of the next pixel from the current position.


· In absolute mode, the first byte is zero and the second byte is a value in the range 03H through FFH. The second byte represents the number of bytes that follow, each of which contains the color index of a single pixel. When the second byte is 2 or less, the escape has the same meaning as in encoded mode. In absolute mode, each run must be aligned on a word boundary.



The following example shows the hexadecimal values of an 8-bit compressed bitmap.

03 04 05 06 00 03 45 56 67 00 02 78 00 02 05 01
02 78 00 00 09 1E 00 01


This bitmap would expand as follows (two-digit values represent a color index for a single pixel):

04 04 04
06 06 06 06 06
45 56 67
78 78
move current position 5 right and 1 down
78 78
end of line
1E 1E 1E 1E 1E 1E 1E 1E 1E
end of RLE bitmap


When the biCompression member is BI_RLE4, the bitmap is compressed by using a run-length encoding format for a 4-bit bitmap, which also uses encoded and absolute modes:

· In encoded mode, the first byte of the pair contains the number of pixels to be drawn using the color indices in the second byte. The second byte contains two color indices, one in its high-order four bits and one in its low-order four bits. The first of the pixels is drawn using the color specified by the high-order four bits, the second is drawn using the color in the low-order four bits, the third is drawn using the color in the high-order four bits, and so on, until all the pixels specified by the first byte have been drawn.

· In absolute mode, the first byte is zero, the second byte contains the number of color indices that follow, and subsequent bytes contain color indices in their high- and low-order four bits, one color index for each pixel. In absolute mode, each run must be aligned on a word boundary. The end-of-line, end-of-bitmap, and delta escapes described for BI_RLE8 also apply to BI_RLE4 compression.

The following example shows the hexadecimal values of a 4-bit compressed bitmap.

03 04 05 06 00 06 45 56 67 00 04 78 00 02 05 01
04 78 00 00 09 1E 00 01


This bitmap would expand as follows (single-digit values represent a color index for a single pixel):

0 4 0
0 6 0 6 0
4 5 5 6 6 7
7 8 7 8
move current position 5 right and 1 down
7 8 7 8
end of line
1 E 1 E 1 E 1 E 1
end of RLE bitmap




If biHeight is negative, indicating a top-down DIB, biCompression must be either BI_RGB or BI_BITFIELDS. Top-down DIBs cannot be compressed.

See Also

BITMAPINFO


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

BITMAPINFOHEADER



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

typedef struct tagBITMAPINFOHEADER{ // bmih DWORD biSize;
ДОЛГО (ДЛИНОЙ) biWidth;
ДОЛГО (ДЛИНОЙ) biHeight;
ТЕКСТОВЫЕ бипланы;
СЛОВО biBitCount DWORD biCompression;
biSizeImage DWORD;
ДОЛГО (ДЛИНОЙ) biXPelsPerMeter;
ДОЛГО (ДЛИНОЙ) biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;


Участники

biSize

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

biWidth

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

biHeight

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

Бипланы

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

biBitCount

Определяет количество битов за пиксель. Эта величина должна быть 1, 4, 8, 16, 24, или 32.

biCompression

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

Оцените Description BI_RGB несжатый формат.
BI_RLE8 групповой закодированный формат (RLE) для побитовых отображений с 8 битами за пиксель. Формат сжатия является двух байтовым форматом, состоящим из байта счета сопровожденного байтом, содержащим цветной индекс. Более подробно, смотри секцию Замечаний следующего.
BI_RLE4 формат RLE для побитовых отображений с 4 битами за пиксель. Формат сжатия является двух байтовым форматом, состоящим из байта счета сопровожденного двумя текстовыми-длиной цветных индексов. Более подробно, смотри секцию Замечаний следующего.
BI_BITFIELDS Определяет, что побитовое отображение не сжато и, что цветная таблица состоит из трех цветных масок двойного слова, что определять красные, зеленые, и синие компоненты, соответственно, каждого пикселя. Это - в силе когда использовано 16- и 32- битами-за-побитовые отображения пикселя.


biSizeImage

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

biXPelsPerMeter

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

biYPelsPerMeter

Определяет вертикальное разрешение, на пикселях за метр, целевого устройства для побитового отображения.

biClrUsed

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

Если побитовое отображение является упакованным побитовым отображением ( побитовое отображение в котором массив побитового отображения немедленно следует за заголовком BITMAPINFO и на который ссылался единственным указателем), biClrUsed элемент должен быть или 0 или фактический размер цветной таблицы.

biClrImportant

Определяет количество цветных индексов, которые считаются важными для отображения побитового отображения. Если эта величина является нулем, все цвета важные.



Замечания

Структура BITMAPINFO объединяет структуру BITMAPINFOHEADER и цветная таблица, чтобы обеспечивать полное определение измерений и цветов DIB. Более подробно о DIBs, смотри описание структуры данных BITMAPINFO.
Приложение должно использовать информацию загруженную в элемент biSize, чтобы располагать цветную таблицу в структуре BITMAPINFO, следующим образом:

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


Windows поддерживает форматы для сжимающих побитовых отображений, которые определяют их цвета с восемью или четырьмя битами за пиксель. Сжатие уменьшает дисковую и память памяти необходимую для побитового отображения. Следующие параграфы описывают эти форматы.
Когда элемент biCompression - BI_RLE8, побитовое отображение сжато использованием группового кодирования формата (RLE) для 8- битового побитового отображения. Этот формат может быть сжат в закодированные или абсолютные режимы. Оба режима могут произойти везде в том же побитовом отображении.

Закодировавшее режим состоит из двух байтов: первый байт определяет количество последовательных пикселей, которые нужно делать используя цветной индекс содержал во втором байте. Кроме того, первый байт пары может быть установлен в нуль, чтобы указывать переход, который обозначает конец строки, конца побитового отображения, или дельту. Интерпретация перехода зависит от величины второго байта пары, которая может быть одним из следующего:

Оцените Значение 0 Конца строки.
1 Конца побитового отображения.
2 Дельты. Два байтов, следующих за переходом содержат без знака величины, указывающие горизонтальное и вертикальное смещения следующего пикселя из текущей позиции.


В абсолютном режиме, первый байт является нулем и второй байт является величиной в дипазоне 03H через FFH. Второй байт представляет количество байтов за которыми следуют, который содержит цветной индекс единственного пикселя. Когда второй байт - 2 или менее, переход имеет то же значение как в закодированном режиме. В абсолютном режиме, каждый запускает должно быть выровнено на текстовой границе.



Следующий пример показывает шестнадцатеричные величины 8- бита сжавшего побитовое отображение.

03 04 05 06 00 03 45 56 67 00 02 78 00 02 05 01
02 78 00 00 09 1E 00 01


Это побитовое отображение должно расширить следующим образом (двух цифровые величины представляют цветной индекс для единственного пикселя):

04 04 04
06 06 06 06 06
45 56 67
78 78
текущая позиция перемещения 5 прав и 1 вниз
78 78
конец строки
конец 1E 1E 1E 1E 1E 1E 1E 1E 1E побитового отображения RLE


Когда элемент biCompression - BI_RLE4, побитовое отображение сжато использованием группового кодирования формата для 4- битового побитового отображения, которое также использует закодированные и абсолютные режимы:

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

В абсолютном режиме, первый байт является нулем, второй байт содержит количество цветных индексов, которые следуют, и последующие байты содержат цветные индексы в их высоких- и младшие четыре бита, один цветной индекс для каждого пикселя. В абсолютном режиме, каждый запускает должно быть выровнено на текстовой границе. Конец--строки, конца--побитового отображения, и переходы дельты описанные для BI_RLE8 также относятся к сжатию BI_RLE4.

Следующий пример показывает шестнадцатеричные величины 4- бита сжавшего побитовое отображение.

03 04 05 06 00 06 45 56 67 00 04 78 00 02 05 01
04 78 00 00 09 1E 00 01


Это побитовое отображение должно расширить следующим образом (единственные-цифровые величины представляют цветной индекс для единственного пикселя):

0 4 0
0 6 0 6 0
4 5 5 6 6 7
7 8 7 8
текущая позиция перемещения 5 прав и 1 вниз
7 8 7 8
конец строки 1 E 1 E 1 E 1 E 1 конца побитового отображения RLE




Если biHeight - негатив, указывающий нисходящий DIB, biCompression должен быть или BI_RGB или BI_BITFIELDS. Нисходящий DIBs не может быть сжат.

Смотри Также

BITMAPINFO


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz