Поделиться через


Шаг 4. Рисование растрового изображения в клиентской области

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

[Этот API не поддерживается и может быть изменен или недоступен в будущем.]

Этот раздел представляет собой шаг 4 захвата рамки плаката.

Последний шаг — нарисовать растровое изображение в клиентской области окна приложения с помощью функции SetDIBitsToDevice . В этом примере просто закрашивалось растровое изображение в левом верхнем углу клиентской области без учета размера окна:

case WM_PAINT:
    {
        PAINTSTRUCT ps;
        HDC hdc = BeginPaint(hwnd, &ps);
        if (pbmi)
        {
            int result = SetDIBitsToDevice(hdc, 0, 0, 
                pbmi->biWidth,
                pbmi->biHeight,
                0, 0, 0,
                pbmi->biHeight,
                pBuffer,
                reinterpret_cast<BITMAPINFO*>(pbmi),
                DIB_RGB_COLORS);
        }
        EndPaint(hwnd, &ps);
    }
    break;

Переменные pBuffer и pbmi объявляются на шаге 1. Создание Платформы Windows Framework, а их значения получаются в разделе Шаг 3. Реализация функции Frame-Grabbing.

Захват рамки плаката