Функция SetDIBitsToDevice


Функция SetDIBitsToDevice устанавливает пиксели в заданном прямоугольнике устройства, которое связано с целевым контекстом устройства, используя данные о цвете из аппаратно-независимого растрового формата (DIB).

Windows 98/Me, Windows 2000/XP: SetDIBitsToDevice была дополнена, чтобы дать возможность формат изображения JPEG или PNG передавать как источниковое изображение.

Синтаксис
int SetDIBitsToDevice(
  HDC hdc,                 // дескриптор DC
  int XDest,               // x-коорд. верхнего левого угла приемника
  int YDest,               // y-коорд. верхнего левого угла приемника
  DWORD dwWidth,           // ширина прямоугольника источника
  DWORD dwHeight,          // высота прямоугольника источника
  int XSrc,                // x-коорд. нижнего левого угла источника
  int YSrc,                // y-коорд. нижнего левого угла источника
  UINT uStartScan,         // первая строка развертки в массиве
  UINT cScanLines,         // число строк развертки
  CONST VOID *lpvBits,     // массив битов DIB
  CONST BITMAPINFO *lpbmi, // информация о точечном рисунке
  UINT fuColorUse          // RGB или индексы палитры
);

Параметры

hdc

[in] Дескриптор контекста устройства.

XDest

[in] Определяет x-координату верхнего левого угла приемного прямоугольника, в логических единицах измерения.

YDest

[in] Определяет y-координату верхнего левого угла приемного прямоугольника, в логических единицах измерения.

dwWidth

[in] Определяет ширину секции DIB, в логических единицах измерения.

dwHeight

[in] Определяет высоту секции DIB, в логических единицах измерения.

XSrc

[in] Определяет x-координату нижнего левого угла DIB, в логических единицах измерения.

YSrc

[in] Определяет y-координату нижнего левого угла DIB, в логических единицах измерения.

uStartScan

[in] Определяет начальную строку развертки DIB.

cScanLines

[in] Определяет число строк развертки DIB, содержащиеся в  массиве, на который указывает параметр lpvBits.

lpvBits

[in] Указатель на данные о цвете формата (DIB), сохраненные как массив байтов. Подробную информацию см. ниже в разделе Замечания.

lpbmi

[in] Указатель на структуру BITMAPINFO, которая содержит информацию о  DIB.

fuColorUse

[in] Определяет, содержит ли член bmiColors структуры BITMAPINFO значения (RGB) чистого красного, зеленого, синего цветов  или индексы палитры. Подробную информацию, см. ниже в разделе Замечания.

Параметр fuColorUse  должен быть одним из нижеперечисленных значений.

 

Значение Предназначение
DIB_PAL_COLORS Таблица цветов состоит из массива 16-битовых индексов текущей выбранной логической палитры.
DIB_RGB_COLORS Таблица цветов содержит значения  констант RGB.
 

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

Если функция завершается успешно, возвращаемое значение - число установленных строк развертки.

Если функция завершается с ошибкой, величина возвращаемого значения - нуль.

Windows NT/2000/XP: Чтобы получить дополнительные сведения об ошибке, вызовите GetLastError.

Windows 98/Me, Windows 2000/XP: Если драйвер не может поддерживать формат JPEG или PNG файла изображения, который передан в SetDIBitsToDevice, функция завершится ошибкой и возвратит значение GDI_ERROR. Если происходит ошибка, приложение должно возвратиться к своей собственной поддержке формата изображения JPEG или  PNG, чтобы развернуть изображение в точечный рисунок, а затем передать его  в SetDIBitsToDevice.

Замечания

Оптимальная скорость рисования точечного рисунка получается тогда, когда  биты  рисунка - индексы в системной палитре.

Приложения могут извлекать  цвета и индексы системной палитры при помощи вызова функции GetSystemPaletteEntries. После того, как цвета и индексы извлекутся, приложение может создать аппаратно-независимый растровый формат (DIB). Подробную информации о системной палитре, см. в главе Цвета.

Начало координат идущего снизу вверх растрового формата (DIB) - это левый нижний угол точечного рисунка; начало координат идущего сверху вниз формата (DIB) - это левый верхний угол.

Чтобы уменьшить объем памяти, необходимый для установки битов из большого сегмента DIB на поверхности устройства, приложение может объединять вывод данных, неоднократно вызывая SetDIBitsToDevice каждый раз, когда помещает различные части точечного рисунка в массив lpvBits. Значения параметров uStartScan и cScanLines  идентифицируют часть точечного рисунка, содержащегося в массиве lpvBits.

Функция SetDIBitsToDevice возвращает ошибку, если она вызывается процессом, который работает в фоновом режиме, в то время как выполняется в активном режиме полноэкранный сеанс MS-DOS .

Windows 98/Me, Windows 2000/XP:

ICM: Управление цветом выполняется. Совокупность параметров цвета текущего контекста устройства используется как исходная конфигурация цветового пространства. Используется sRGB цветовое пространство.

Код примера

Пример смотри в статье Тестирование принтера на поддержку JPEG или PNG.

Смотри также 

Обзор Точечные рисунки, Функции, используемые точечными рисунками,  BITMAPINFO, GetSystemPaletteEntries, SetDIBits, StretchDIBits

Размещение и совместимость SetDIBitsToDevice

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

Gdi32.lib

Заголовочный файл

 

- объявлено в

Wingdi.h

- включено в

Windows.h

Unicode

Нет

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

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz