Функция SetDIBitsToDevice (wingdi.h)
Функция SetDIBitsToDevice задает пиксели в указанном прямоугольнике на устройстве, связанном с контекстом целевого устройства, с помощью цветовых данных из изображения DIB, JPEG или PNG.
Синтаксис
int SetDIBitsToDevice(
[in] HDC hdc,
[in] int xDest,
[in] int yDest,
[in] DWORD w,
[in] DWORD h,
[in] int xSrc,
[in] int ySrc,
[in] UINT StartScan,
[in] UINT cLines,
[in] const VOID *lpvBits,
[in] const BITMAPINFO *lpbmi,
[in] UINT ColorUse
);
Параметры
[in] hdc
Дескриптор контекста устройства.
[in] xDest
Координата X в логических единицах верхнего левого угла прямоугольника назначения.
[in] yDest
Координата Y в логических единицах верхнего левого угла прямоугольника назначения.
[in] w
Ширина изображения в логических единицах.
[in] h
Высота изображения в логических единицах.
[in] xSrc
Координата X в логических единицах левого нижнего угла изображения.
[in] ySrc
Координата Y в логических единицах нижнего левого угла изображения.
[in] StartScan
Начальная строка сканирования на изображении.
[in] cLines
Количество строк сканирования DIB, содержащихся в массиве, на который указывает параметр lpvBits .
[in] lpvBits
Указатель на данные цвета, хранящиеся в виде массива байтов. Дополнительные сведения см. в разделе "Примечания".
[in] lpbmi
Указатель на структуру BITMAPINFO , содержащую сведения о DIB.
[in] ColorUse
Указывает, содержит ли элемент bmiColors структуры BITMAPINFO явные красные, зеленые, синие (RGB) значения или индексы в палитре. Дополнительные сведения см. в разделе "Примечания".
Параметр fuColorUse должен иметь одно из следующих значений.
Значение | Значение |
---|---|
|
Таблица цветов состоит из массива 16-разрядных индексов в выбранной логической палитре. |
|
Таблица цветов содержит литеральные значения RGB. |
Возвращаемое значение
Если функция выполняется успешно, возвращаемым значением будет количество заданных строк сканирования.
Если заданы нулевые строки сканирования (например, если значение dwHeight равно 0) или функция завершается сбоем, функция возвращает ноль.
Если драйвер не поддерживает изображение файла JPEG или PNG, переданное в SetDIBitsToDevice, функция завершится ошибкой и возвратит GDI_ERROR. В случае сбоя приложение должно использовать собственную поддержку JPEG или PNG, чтобы распаковывать изображение в растровое изображение, а затем передать его в SetDIBitsToDevice.
Комментарии
Оптимальная скорость рисования точечных рисунков достигается, когда биты растрового изображения являются индексами в системной палитре.
Приложения могут получать цвета и индексы системной палитры, вызывая функцию GetSystemPaletteEntries . После получения цветов и индексов приложение может создать DIB. Дополнительные сведения о системной палитре см. в разделе Цвета.
Линии сканирования должны быть выровнены по DWORD , за исключением растровых изображений, сжатых RLE.
Источником снизу вверх DIB является левый нижний угол растрового изображения; источником dib сверху вниз является левый верхний угол.
Чтобы уменьшить объем памяти, необходимый для задания битов из большого DIB на поверхности устройства, приложение может группировать выходные данные, многократно вызывая SetDIBitsToDevice, каждый раз помещая другую часть растрового изображения в массив lpvBits . Значения параметров uStartScan и cScanLines определяют часть растрового изображения, содержащегося в массиве lpvBits .
Функция SetDIBitsToDevice возвращает ошибку, если она вызывается процессом, выполняющимся в фоновом режиме, а полноэкранный сеанс MS-DOS выполняется на переднем плане.
- Если элемент biCompressionbitMAPINFOHEADER BI_JPEG или BI_PNG, lpvBits указывает на буфер, содержащий изображение JPEG или PNG. Элемент biSizeImage указывает размер буфера. Параметр fuColorUse должен иметь значение DIB_RGB_COLORS.
- Чтобы обеспечить правильную очередь метафайлов во время печати, приложения должны вызывать escape-экранирование CHECKJPEGFORMAT или CHECKPNGFORMAT, чтобы убедиться, что принтер распознает изображение JPEG или PNG, соответственно, перед вызовом SetDIBitsToDevice.
Примеры
Пример см. в разделе Тестирование принтера для поддержки JPEG или PNG.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | wingdi.h (включая Windows.h) |
Библиотека | Gdi32.lib |
DLL | Gdi32.dll |