Функция GetDIBits


Функция 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

Нет

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

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки
Переведено 17.12.2003 12:43 ©Copyright V.Sokovikov
Hosted by uCoz