Экран захвата QNX 6.5.0 или окно Qt C++

Мне нужно захватить экран или окно в QNX 6.5.0 - 8 раз в секунду. Если использовать стандартную низкоуровневую API-функцию PgReadScreen(), для разрешения экрана 1920x1080 (24 бита) она очень медленная... При создании контекста PdCreateDirectContext() драйвер блокирует все остальные отрисовки. Замораживает экран на несколько секунд.

Я тоже смотрел регионы, но как я понял они не содержат графических данных окон?

Использовал Qt 5.7.1 с урезанным функционалом. Например, функция grabWindow() не реализована.

Хорошая идея: использовать функцию виджета render(), но некоторые объекты... например: список comboBox тоже является виджетом. Я тоже должен следить и рисовать.

Любые идеи?


person Dion    schedule 14.12.2018    source источник


Ответы (1)


Захват окна очень прост. QWidget (widget.isWindow()==true) верхнего уровня поддерживается резервным хранилищем QImage. Для этого не требуется перерисовки или вызовов API ОС. В этом ответе есть рабочая, в основном полная, но простая реализация этой идеи. Он должен быть переносимым на любую платформу и любой виджет, если используется растровый бэкэнд.

person Kuba hasn't forgotten Monica    schedule 14.12.2018