Как отобразить прокручиваемые области холста с помощью IViewObject :: Draw? - PullRequest
3 голосов
/ 29 января 2010

Я пытался отобразить весь холст в элементе управления IWebBrowser2 в растровое изображение. IViewObject :: Draw кажется наиболее перспективным подходом, но я не могу заставить его отрисовывать что-либо, что требует прокрутки для отображения. Хотя я мог автоматизировать прокрутку и соединять изображения вместе, это было бы странно с любыми элементами фиксированного положения. Это вообще выполнимо?

Кроме того, я попытался установить размер контроллера, который позволял бы отображать все содержимое без необходимости прокрутки, но Windows ограничивает максимальный размер текущим разрешением экрана, так что это приводит меня лишь частично. 1003 *

Любая помощь будет высоко ценится. В настоящее время я делаю это в контексте Win7 и IE8, но я не думаю, что это должно иметь большое значение.

Ответы [ 2 ]

2 голосов
/ 25 марта 2010

Извините, что мне потребовалось много времени, чтобы ответить на этот вопрос.

Я написал статью, в которой подробно описывается, как обмануть Windows, чтобы она позволяла изменять размер окна, превышающего разрешение виртуального экрана, позволяя таким функциям, как PrintWindow или IViewObject :: Draw, захватывать всю клиентскую область (то есть холст браузера).

http://nirvdrum.com/2010/03/25/how-to-take-full-page-or-full-canvas-screenshots-in-windows.html

Фактическую реализацию этой техники можно найти в моем репозитории SnapsIE на GitHub (имя пользователя: nirvdrum). К сожалению, мне не хватает кармы, чтобы разместить две гиперссылки. Репозиторий связан со статьей.

0 голосов
/ 04 февраля 2010

Скорее всего, это оптимизация IE, которая позволяет избежать рисования больше, чем требуется. Возможно, вам удастся прокрутить окно и вызвать цикл IViewObject :: Draw без анимации?

Я удивлен, что Windows ограничивает максимальный размер до текущего разрешения экрана. Вы уверены в этом?

...