Функция SetDIBitsToDevice использует данные о цвете от аппаратно-независимого растрового формата (DIB), чтобы установить пиксели в определяемом прямоугольнике устройства, которое связано с целевым контекстом устройства.
Windows 98/Me, Windows 2000/XP: функция SetDIBitsToDevice расширена, чтобы дать возможность изображения формата JPEG и PNG передавать как исходное изображение
Например:
// // pvJpgImage указатель на буфер, содержащий изображение JPEG // nJpgImageSize - размер этого буфера // ulJpgWidth - ширина изображения JPEG // ulJpgHeight - высота изображения JPEG // // // Проверим, поддерживается ли CHECKJPEGFORMAT (устройство имеет // поддержку JPEG) и используется ли он, проверим как устройство может // обрабатывать изображения в формате JPEG. // ul = CHECKJPEGFORMAT; if ( // Проверим, существует ли CHECKJPEGFORMAT: (ExtEscape(hdc, QUERYESCSUPPORT, sizeof(ul), &ul, 0, 0) > 0) && // Проверим, без ошибок ли исполнен CHECKJPEGFORMAT: (ExtEscape(hdc, CHECKJPEGFORMAT, pvJpgImage, nJpgImageSize, sizeof(ul), &ul) > 0) && // Проверим код состояния возвращенный CHECKJPEGFORMAT: (ul == 1) ) { // // Инициализируем структуру BITMAPINFO. // memset(&bmi, 0, sizeof(bmi)); bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmi.bmiHeader.biWidth = ulJpgWidth; bmi.bmiHeader.biHeight = -ulJpgHeight;// изобразим сверху вниз bmi.bmiHeader.biPlanes = 1; bmi.bmiHeader.biBitCount = 0; bmi.bmiHeader.biCompression = BI_JPEG; bmi.bmiHeader.biSizeImage = nJpgImageSize; // // Создадим SetDIBitsToDevice. // iRet = SetDIBitsToDevice(hdc, ulDstX, ulDstY, ulDstWidth, ulDstHeight, 0, 0, 0, ulJpgHeight, pvJpgImage, &bmi, DIB_RGB_COLORS); if (iRet == GDI_ERROR) return FALSE; } else { // // Декомпрессируем изображение в формат DIB и вызовем // функцию SetDIBitsToDevicewith вместо DIB. // } |