Функция 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 |
Нет |
Замечания по платформе |
Не имеется |