Функция GetDIBits извлекает биты заданного совместимого точечного рисунка и копирует их в буфер как DIB, используя заданный формат.
Синтаксис
int GetDIBits( HDC hdc, // дескриптор DC HBITMAP hbmp, // дескриптор рисунка UINT uStartScan, // первая устанавливаемая строка развертки UINT cScanLines, // число копируемых строк развертки LPVOID lpvBits, // массив для битов рисунка LPBITMAPINFO lpbi, // буфер данных рисунка UINT uUsage // индексы RGB или палитры ); |
Параметры
hdc
[in] Дескриптор контекста устройства.hbmp
[in] Дескриптор точечного рисунка. Это должен быть совместимый точечный рисунок (DDB).uStartScan
[in] Определяет первую извлекаемую строку развертки.cScanLines
[in] Определяет число извлекаемых сток развертки.lpvBits
[out] Указатель на буфер, принимающий данные точечного рисунка. Если этот параметр NULL, функция переправляет размеры и формат точечного рисунка в структуру BITMAPINFO, указанную параметром lpbi.lpbi
[in/out] Указатель на структуру BITMAPINFO, которая определяет желаемый формат для данных DIB.uUsage
[in] Определяет формат члена bmiColors структуры BITMAPINFO. Он должен быть одним из значений, перечисленных ниже.
Значение | Предназначение |
---|---|
DIB_PAL_COLORS | Таблица цвета должна состоять из массива 16-битовых индексов текущей логической палитры. |
DIB_RGB_COLORS | Таблица цвета должна состоять из точных значений красного, зеленого и синего цветов (RGB). |
Возвращаемые значения
Если параметр lpvBits - не ПУСТО (NULL) и функция завершается успешно, возвращаемое значение - число строк развертки, скопированных из точечного рисунка.
Windows 95/98/Me: Если параметр lpvBits - ПУСТО (NULL), и GetDIBits успешно заполняет структуру BITMAPINFO, возвращаемое значение - общее количество строк развертки в точечном рисунке.
Windows NT/2000/XP: Если параметр lpvBits - ПУСТО (NULL), и GetDIBits успешно заполняет структуру BITMAPINFO, возвращаемое значение является ненулевым.
Если функция завершается с ошибкой, величина возвращаемого значения - нуль.
Windows NT/2000/XP: Чтобы получить дополнительные сведения об ошибке, вызовите GetLastError. Функция может иметь нижеследующее значение.
Значение | Предназначение |
---|---|
ERROR_INVALID_PARAMETER | Один или несколько входных параметров недопустимы. |
Замечания
Если затребованный формат для DIB соответствует его внутреннему формату, значения RGB для точечного рисунка копируются. Если затребованный формат не соответствует внутреннему формату, таблица цветов синтезируется. Нижеследующая таблица описывает таблицу цветов, синтезируемую для каждого формата.
Значение | Предназначение |
---|---|
1_BPP | Таблица цвета состоит из записей черного и белого. |
4_BPP | Таблица цвета состоит из смеси цветов, идентичных стандартной палитре VGA. |
8_BPP | Таблица цветов состоит из обычной смеси 256 цветов, определяемых графическим интерфейсом устройств GDI. (В эти 256 цветов включены и 20 цветов, находящихся в заданной по умолчанию (типичной) логической палитре.) |
24_BPP | Таблица цветов не возвращается. |
Если параметр lpvBits - правильный указатель, первые шесть членов структуры BITMAPINFOHEADER должны быть инициализированы, чтобы установить размер и формат DIB. Строки развертки должны выравниваться по границе ДВОЙНОГО СЛОВА (DWORD), исключая точечные рисунки сжатые методом RLE.
Идущий снизу вверх (восходящий) аппаратно-независимый растровый формат (DIB) определяется при помощи установки высоты положительным числом, в то время как идущий сверху вниз (нисходящий) формат DIB определяется установкой высоты отрицательным числом. Таблица цветов точечного рисунка должна добавляться в конец структуры BITMAPINFO.
Если параметр lpvBits имеет значение ПУСТО (NULL), функция GetDIBits проверяет первый член первой структуры, на которую указывает параметр lpbi. Этот член должен определять размер, в байтах, структуры BITMAPCOREHEADER или BITMAPINFOHEADER. Функция использует заданный размер, чтобы выяснить, как должны быть инициализированы остальные члены .
Если параметр lpvBits имеет значение ПУСТО (NULL), а член подсчета битов BITMAPINFO инициализирован в нуль, GetDIBits заполняет структуру BITMAPINFOHEADER или BITMAPCOREHEADER без таблицы цветов. Эта методика может использоваться для запроса атрибутов точечного рисунка.
Точечный рисунок, идентифицированный параметром hbmp не должен быть выбран в контекст устройства, когда приложение вызывает эту функцию.
Начало координат для идущего снизу вверх формата DIB - левый нижний угол точечного рисунка; начало координат для идущего сверху вниз формата DIB - левый верхний угол.
Смотри также
Обзор Точечные рисунки, Функции, используемые точечными рисунками, BITMAPCOREHEADER, BITMAPINFO, BITMAPINFOHEADER, SetDIBits
Размещение и совместимость GetDIBits |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
Gdi32.lib |
Заголовочный файл |
|
- объявлено в |
Wingdi.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |