Можно создать скриншот контента Window в Qt 5? Например, у нас есть веб-браузер, и я хочу создать экран только из страницы без хрома (окно меню …). Вот пример:
http://s7.postimg.org/5ekkmpdbd/question.png
Изображение выше представляет функцию, которую я хочу реализовать в своем приложении Qt.
Вот пример:
originalPixmap = QPixmap::grabWindow(QApplication::activeWindow()->winId());
есть возможность рендерить только контент (веб-страницу) браузера и получить изображение?
Способ решения проблемы хрома зависит от вашей цели. «Chrome», на который вы ссылаетесь, является частью веб-браузера, с которым вы пытаетесь взаимодействовать.
Если вы делаете это как быстрый внутренний взлом, то вы можете жестко закодировать некоторые смещения, необходимые для обрезки исходного растрового изображения, чтобы удалить хром.
Если вы хотите что-то, что может захватывать скриншоты веб-сайта и не заботится о том, какой браузер используется, вы должны использовать WebKit в комплекте с Qt. Тогда у вас есть полный контроль над тем, где материал отображается.
Если вы хотите получить снимки экрана из браузера, предоставленного пользователем, один из подходов заключается в добавлении расширения в браузер и реализации сервера, который может получать изображения от расширения, запущенного в браузере. Расширение может быть написано в javascript, вероятно, для всего, кроме IE. Хотя это будет зависеть от браузера.
Другой подход заключается в проверке, не предоставляет ли браузер некоторые другие API, которые могут быть использованы для этой цели, без необходимости написания расширения. Насколько я знаю, подобные расширения уже должны существовать. Безусловно, существуют тестовые среды с открытым исходным кодом, которые позволяют вам отображать сайт в нескольких браузерах; они должны обеспечить эту функциональность «захват из браузера».
Nitpick: в Qt 5 вы должны использовать QScreen::grabWindow()
не устарела QPixmap::grabWindow()
, Я также надеюсь, что вы знаете, что если перед вашим окном есть какие-либо окна и они закрывают его, они будут захвачены. Захват осуществляется с экрана, а не непосредственно из окна.
Других решений пока нет …