Растровые изображения, пиктограммы и метафайлы, страница 7

См. также

CreateBitmapIndirect, BitBlt, SelectObject, DeleteObject

Пример

В следующем примере функция CreateBitmap применяется для создания монохромного растрового изображения, когда пользователь выбирает пуню-меню Test!. Это растровое изображение выбирается для контекста устройства памяти и на нем выводятся прямоугольник и эллипс. После этого отображается полученное растровое изображение (рис 13.4).

См.    \local-sources\cbapl3\13-05.txt

CreateBitmapIndirect                     + Windows 98   + Windows 2000

Описание

Функция CreateBitmapIndirect позволяет создать растровое изображение по данным структуры BITMAP. Структура BITMAP описывает ширину, высоту, формат цвета (число цветовых плоскостей и битов на пиксель), а также содержит фактическое двоичное представление растрового изображения.

Синтаксис

HBITMAP CreateBitmapIndirect( CONST BITMAP* Ipbm )

Параметры Ipbm

CONST BITMAP*. Указатель на структуру BITMAP, которая содержит информацию о растровом изображении. Если в приложении член bmWidth или bmHeight установлен равным 0, то функция CreateBitmapIndirect возвращает дескриптор монохромного растрового изображения с размерами 1x1 пиксель. Определение структуры BITMAP приведено ниже.

Возвращаемое значение

НВГГМАР. В случае успешного выполнения — дескриптор нового растрового изображения; в ином случае возвращаемое значение — NULL.

Включаемый файл

wingdi.h

См. также

CreateBitmap, SelectObject, DeleteObject

Определение BITMAP

typedef struct tagBITMAP {

LONG      bmType ; LONG      bmWidth; LONG      bmHeight; LONG      bmWidthBytes ; WORD      bmPlanes ; WORD      bmBitsPixel; LPVOID bmBits; }   BITMAP;

Члены

bmType

LONG. Тип растрового изображения. Этот член должен иметь значение 0.

bmWidth

LONG. Ширина растрового изображения в пикселях.

bmHeight

LONG. Высота растрового изображения в пикселях.

bmWidthBytes

LONG. Число байтов в каждой строке развертки. Это значение должно быть кратно двум, поскольку в Windows предполагается, что двоичное представление растрового изображения образует массив, выровненный по границе слова.

bm Planes

WORD. Число цветовых плоскостей.

bmBitsPixel

WORD. Число битов, необходимых для представления цвета пикселя.

bmBits

LPVOID. Указатель на начало двоичного представления растрового изображения. Член bmBits представляет собой указатель на массив символьных (однобайтовых) значений.

Примерv/п i. vj4W.ri vsvsjiuwi xi VSJVTIU.

В следующем примере с применением функции CreateBitmapIndirect создается растровое изображение, когда пользователь выбирает пункт меню Test!. Растровое изображение представляет собой букву X, отображаемую в клиентской области окна.

CM.   \local-sources\cbapl3\13-06.txt

CreateCompatibleBitmap                • Windows 98   • Windows 2000

Описание

Функция CreateCompatibleBitmap позволяет создать растровое изображение, совместимое с устройством, которое связано с заданным контекстом устройства (DC). Полученное растровое изображение в памяти имеет такое же число цветовых плоскостей и битов кодировки цвета на пиксель, что и само устройство. Затем это растровое изображение можно выбрать в контекст устройства памяти для вывода.

Синтаксис

HBITMAP CreateCompatibIeBitmap( HDC hDC, int nWidth, int nHeight )

Параметры

hDC

HDC. Дескриптор контекста устройства для физического устройства, с которым должно быть совместимо растровое изображение.

n Width

int. Ширина растрового изображения в пикселях.

nHeight

int. Высота растрового изображения в пикселях.

Возвращаемое значение

HBITMAP. В случае успешного выполнения — дескриптор нового растрового изображения; в ином случае возвращаемое значение — NULL.

Включаемый файл

wingdi.h

См. также

CreateCompatibleDC

Пример

Следующий пример аналогичен примеру для функции CreateBitmap, за исключением того, что в этом примере гарантируется совместимость растре-вого изображения с устройством отображения, поскольку применяется функция CreateCompatibleBitmap.

См.    \local-sourcea\chapl3\13-07.txt

CreateDIBitmap                           • Windows 98   • Windows 2000

Описание

Функция CreateDIBitmap позволяет создать аппаратно-зависимое растровое изображение (DDB) из аппаратно-независимого растрового изображения (DIB) и при желании установить биты растрового изображения.

Синтаксис

HBITMAP CreateDIBitmap( HDC hDC, CONST BITMAPINFOHEADER* Ipbmih, DWORD dwlnit, CONST VOID* Ipblnit, CONST BITMAPINFO* Ipbmi, UINT uUsage )

Параметры hDC

HDC. Контекст устройства для физического устройства, на котором должно быть отображено растровое изображение.

Ipbmih

CONST BITMAPINFOHEADER*. Указатель на структуру BITMAPINFOHEADER. Если параметр dwlnit имеет значение CBMJNIT, в функции для получения требуемой ширины и высоты растрового изображения, а также другой информации применяется структура BITMAPINFOHEADER. Определение структуры BITMAPINFOHEADER приведено ниже.

dwlnit

DWORD. Определяет, инициализировано или нет созданное  растровое изображение. Если этот параметр установлен равным 0, растровое изображение не инициализировано. Если этот параметр установлен равным CBM_INIT, для инициализации растрового изображения применяются данные, указанные параметрами Ipblnit и Ipbmi.

Ipblnit

CONST VOID*. Указатель на массив байтов, содержащий начальные данные растрового изображения. Формат данных зависит от члена biBitCount структуры BITMAPINFOHEADER, содержащейся в структуре BITMAP-INFO, на которую указывает параметр Ipbmi.

Ipbmi

CONST BITMAPINFO*. Указатель на структуру BITMAPINFO, которая описывает размеры и форм'ат представления цвета в массиве, указанном параметром Ipblnit. Определение структуры BITMAPINFO приведено ниже.

и Usage

UINT. Указывает, был ли член bmiColors структуры BITMAPINFO инициализирован, и если да, то содержит ли член bmiColors явные значения RGB или индексы палитры. Значение DIB_PAL_COLORS указывает на входы палитры. Значение DIB_RGB_COLORS указывает на явные цвета.

Возвращаемое значение

HBITMAP. В случае успешного выполнения — дескриптор нового растрового изображения; в ином случае возвращаемое значение — NULL.

Включаемый файл

wingdi.h

См. также

GetDIBits, CreateBitmap

Определение BITMAPINFOHEADERtypedef struct tagBITMAPINFOHEADER< DWORD    biSize; LONG      biWidth; LONG      biHeight;

WORD      biPlanes ; WORD      biBitCount DWORD    biCompression; DNORD    biSizelmage ; LONG      biXPelsPerMeter; LONG      biYPelsPerMeter; DWORD    biClrUsed; DWORD    biClr Important ; }   BITMAPINFOHEADER,   *LPBITMAPINFOHEADEH

Члены

biSize

DWORD. Число байтов, требуемых в соответствии со структурой.

biWidth

LONG. Ширина растрового изображения в пикселях.

biHeight

LONG. Высота растрового изображения в пикселях. Если параметр biHeight положителен, растровое изображение имеет восходящий формат D1B, и начало его координат находится в левом нижнем углу. Если параметр biHeight отрицателен, растровое изображение имеет нисходящий формат DIB, и начало его координат находится в левом верхнем углу.

biPlanes

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

biBitCount

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

biCompression

DWORD. Тип уплотнения для сжатого восходящего растрового изображе ния (растровые изображения нисходящего формата DIB не могут быть ежа ты). В качестве этого параметра применяется одно из значений, перечне ленных в табл. 13.5.

biSizelmage

DWORD. Размер изображения в байтах.

biXPelsPerMeter

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

biYPelsPerMeter

LONG. Разрешающая способность по вертикали целевого устройства дд> растрового изображения в пикселях на метр.

Таблица 13.5. Значения члена biCompression структуры BITMAPINFOHEADER

Значение

Описание

BI_RGB

Несжатый формат.

BI_RLE8

Формат кодирования длин серий (RLE — run-length encoding) для растровых изображений с 8 битами на пиксель. Формат сжатия представляет собой двухбайтовый формат, состоящий из байта числа повторений, за которым следует байт, содержащий индекс цвета.

BI_RLE4

Формат RLE для растровых изображений с 4 битами на пиксель. Формат сжатия представляет собой двухбайтовый формат, состоящий из байта числа повторений, за которым следует байт, содержащий индекс цвета.

BI_BITFIELDS

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

BMPEG

Указывает, что изображение имеет формат JPEG.

BI_PNG

Указывает, что изображение имеет формат PNG.

biClrUsed

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

Ы Clrlmportant

DWORD. Число индексов цвета, которые необходимы для вывода растрового изображения. Если это значение равно 0, необходимы все цвета.

Определение BITMAPINFO typedef struct tagBITMAPINFO{BITMAPINFOHEADER bmiHeader; RGBQUAD                       bmiColors[l] ; }   BITMAPINFO,   *LPBITMAPIKFO;

Члены bmiHeader

BITMAPINFOHEADER Структура BITMAPINFOHEADER, которая содержит информацию о размерах и формате представления цвета для изображения DIB.

bmiColors

RGBQUAD[]. Массив структур RGBQUAD или данных типа двойного слова, которые определяют цвета в растровом изображении.

Пример

В следующем примере в клиентской области окна выводится малое изображение глобуса, когда пользователь выбирает пункт меню Test!. Изображение, показанное на рис. 13.5, создается путем вывода изображения в контекст устройства памяти, содержащего аппаратно-независимое растровое изображение размером 50x50 пикселей.

CreateDIBSection                         • Windows 98   • Windows 2000

Описание           

Функция CreateDIBSection создает аппаратно-независимое растровое изображение (DIB), в которое могут выводить данные и функции GDI, и функции приложения. Приложение после вызова функции DeleteObject должно закрыть объекты, отображенные в память, для удаления растрового изображения.

Синтаксис

HBITMAP CreateDIBSection( HDC hDC, CONST BITMAPINFO* pbmi, UINT uUsage, VOID** ppvBits, HANDLE hSection, DWORD dwQffiet )

Параметры hDC

HDC. Дескриптор контекста устройства (DC).

pbmi

CONST BITMAPINFO*. Указатель на структуру BITMAPINFO, которая содержит данные о формате создаваемого растрового изображения. Определение  структуры    BITMAPINFO приведено  в   описании   функции CreateDIBitmap.

nUsage

UINT. Указывает, содержит ли член Аян'Со/ог5структурыВ1ТМАРШРО значения RGB или индексы палитры. Значение DIB_PAL_COLORS ука-