На главную

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 | Скачать Вниз

Device-Independent Bitmaps



A DIB contains the following color and dimension information:

· The color format of the device on which the rectangular image was created.
· The resolution of the device on which the rectangular image was created.
· The palette for the device on which the image was created.
· An array of bits that maps red, green, blue (RGB) triplets to pixels in the rectangular image.
· A data-compression identifier that indicates the data compression scheme (if any) used to reduce the size of the array of bits.



This information is stored in a BITMAPINFO structure consisting of a BITMAPINFOHEADER structure followed by two or more RGBQUAD structures. The BITMAPINFOHEADER specifies the dimensions of the pixel rectangle, describes the device's color technology, and identifies the compression schemes used to reduce the bitmap's size. The RGBQUAD structures identify the colors that appear in the pixel rectangle.
There are two varieties of DIB: "bottom-up" DIBs, in which the origin lies at the lower left corner, and "top-down" DIBs, in which the origin lies at the upper left corner. If the height of a DIB, as indicated by the biHeight member of the BITMAPINFOHEADER structure, is a positive value, it is a bottom-up DIB; if the height is a negative value, it is a top-down DIB. Top-down DIBs cannot be compressed.

The color format is specified in terms of a count of color planes and color bits. The count of color planes is always 1; the count of color bits is 1 for monochrome bitmaps, 4 for VGA bitmaps, and 8, 16, 24, or 32 for bitmaps on other color devices. An application retrieves the number of color bits a particular display (or printer) uses by calling the GetDeviceCaps function, specifying BITSPIXEL as the second argument.
The resolution of a display device is specified in pixels per meter. An application can retrieve the horizontal resolution for a video display, or printer, by following a three-step process:

1. Call the GetDeviceCaps function, specifying HORZRES as the second argument.
2. Call GetDeviceCaps a second time, specifying HORZSIZE as the second argument.
3. Divide the first return value by the second return value.



The application can retrieve the vertical resolution by using the same three-step process with different parameters: VERTRES in place of HORZRES, and VERTSIZE in place of HORZSIZE.
The palette is represented by an array of RGBQUAD structures that specify the red, green, and blue intensity components for each color in a display device's color palette. Each color index in the palette array maps to a specific pixel in the rectangular region associated with the bitmap. The size of this array, in bits, is equivalent to the width of the rectangle, in pixels, multiplied by the height of the rectangle, in pixels, multiplied by the count of color bits for the device. An application can retrieve the size of the device's palette by calling the GetDeviceCaps function, specifying the NUMCOLORS constant as the second argument.

The Win32 API supports the compression of the palette array for 8-bit-per-pixel and 4-bit-per-pixel bottom-up DIBs. These arrays can be compressed by using the run-length encoding (RLE) scheme. The RLE scheme uses 2-byte values, the first byte specifying the number of consecutive pixels that use a color index and the second byte specifying the index. For more information about bitmap compression, see the description of the BITMAPINFOHEADER structure.
An application can create a DIB from a DDB by initializing the required structures and calling the GetDIBits function. To determine whether a device supports this function, call the GetDeviceCaps function, specifying RC_DI_BITMAP as the RASTERCAPS flag.

An application can use a DIB to set pixels on the display device by calling the SetDIBitsToDevice or the StretchDIBits function. To determine whether a device supports the SetDIBitsToDevice function, call the GetDeviceCaps function, specifying RC_DIBTODEV as the RASTERCAPS flag. Specify RC_STRETCHDIB as the RASTERCAPS flag to determine if the device supports StretchDIBits.
An application that simply needs to display a preexisting DIB can use the SetDIBitsToDevice function. For example, a spreadsheet application can open existing charts and display them in a window by using the SetDIBitsToDevice function. To repeatedly redraw a bitmap in a window, however, the application should use the BitBlt function. For example, a multimedia application that combines animated graphics with sound would benefit from calling the BitBlt function because it executes faster than SetDIBitsToDevice.


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

ПОБИТОВЫЕ отображения Device-Independent



DIB Содержит следующую цветную и информацию измерения:

Цветной формат устройства на котором прямоугольный образ был создан.
Разрешение устройства на котором прямоугольный образ был создан.
Палитра для устройства на которой образ был создан.
Массив битов, которые отображают красные, зеленые, синие триплеты (RGB) на пиксели в прямоугольном образе.
Данные-сжатие идентификатора, которые указывают схему сжатия данных (если имеется) использованное, чтобы уменьшать размер массива битов.



Эта информация загружена в структуру BITMAPINFO, состоящую из структуры BITMAPINFOHEADER сопровожденной к двум или больше структурам RGBQUAD. BITMAPINFOHEADER Определяет измерения прямоугольника пикселя, описывает цветную технологию устройства и идентифицирует схемы сжатия использованные, чтобы уменьшать размер побитового отображения. Структуры RGBQUAD идентифицируют цвета, которые появляются в прямоугольнике пикселя.
Есть два ряда DIB: "восходящий" DIBs, в котором начало лежит (лгать) в более низком левом углу, и "нисходящий" DIBs, в котором начало лежит (лгать) в верхнем левом углу. Если высота DIB, как указано элементом biHeight структуры BITMAPINFOHEADER, - положительная величина, это - восходящий DIB; если высота является отрицательной величиной, она - нисходящий DIB. Нисходящий DIBs не может быть сжат.

Цветной формат определен с точки зрения счета планов цвета и цветных битов. Счет цветных планов - всегда 1; счет цветных битов - 1 для монохромных побитовых отображений, 4 для побитовых отображений VGA, и 8, 16, 24, или 32 для побитовых отображений на других цветных устройствах. Приложение извлекает количеству цветных битов конкретный дисплей (или принтер) использует вызывая функцию GetDeviceCaps, определяющую BITSPIXEL как второй аргумент.
Разрешение дисплейного устройства определено на пикселях за метр. Приложение может извлечь горизонтальному разрешению для видео дисплея, или принтера, следуя за трех вести процессом:

1. Назовите функцию GetDeviceCaps, определяющую HORZRES как второй аргумент.
2. Назовите GetDeviceCaps вторично, определяющее HORZSIZE как второй аргумент.
3. Поделите первую обратную величину второй обратной величиной.



Приложение может извлечь вертикальное разрешение используя тот же трех вести процесс с другими параметрами: VERTRES вместо HORZRES, и VERTSIZE вместо HORZSIZE.
Палитра представлена массивом структур RGBQUAD, которые определяют красные, зеленые, и синие компоненты интенсивности для каждого цвета в цветной палитре дисплейного устройства. Каждый цветной индекс в массиве палитры отображается на специфический пиксель в прямоугольной области связанной побитовым отображением. Размер этого массива, на битах, - эквивалент ширине прямоугольника, на пикселях, умноженных на высоту прямоугольника, на пикселях, умноженных на счет цветных битов для устройства. Приложение может извлечь размер палитры устройства вызывая функцию GetDeviceCaps, определяющую константу NUMCOLORS как второй аргумент.

Win32 API Поддерживает сжатие массива палитры для 8- бита-за-пиксель и 4- бит-за-пиксель восходящие DIBs. Эти подготавливают, может быть сжато использованием группового кодирования схемы (RLE). Схема RLE использует 2- байтовые величины, первый байт, определяющие количество последовательных пикселей, которые используют цветной индекс и второй байт, определяющие индекс. Более подробно о сжатии побитового отображения, смотри описание структуры BITMAPINFOHEADER.
Приложение может создать DIB из DDB инициализируя необходимые структуры и вызывая функцию GetDIBits. Для того, чтобы определять поддерживает устройство эту функцию, назовите функцию GetDeviceCaps, определяющую RC_DI_BITMAP как флаг RASTERCAPS.

Приложение может использовать DIB, чтобы устанавливать пиксели на дисплейном устройстве вызывая SetDIBitsToDevice или функция StretchDIBits. Для того, чтобы определять поддерживает устройство функцию SetDIBitsToDevice, назовите функцию GetDeviceCaps, определяющую RC_DIBTODEV как флаг RASTERCAPS. Определите RC_STRETCHDIB как флаг RASTERCAPS, чтобы определяться если устройство поддерживает StretchDIBits.
Приложение, что просто нужно отображать, что предшествующий DIB может использовать функцию SetDIBitsToDevice. Например, приложение электронной таблицы может открыть существовать заносит и отображает их в окне используя функцию SetDIBitsToDevice. Для того, чтобы многократно перерисовывать побитовое отображение в окне, тем не менее, приложение должно использовать функцию BitBlt. Например, приложение мультимедиа, которое объединяет оживленную графику с звуком должно выигрывать с вызова функции BitBlt поскольку это выполняет быстрее чем SetDIBitsToDevice.


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