3

我一直在尝试将 IWebBrowser2 控件中的整个画布呈现为位图。IViewObject::Draw 似乎是最有前途的方法,但我无法让它渲染任何需要滚动显示的东西。虽然我可以自动滚动并将图像拼接在一起,但这对于任何固定位置的元素都会显得很奇怪。这甚至可行吗?

此外,我尝试将控制器的大小设置为允许显示整个内容而无需滚动的大小,但 Windows 将最大大小限制为当前屏幕分辨率,因此只能让我部分到达那里。

任何帮助将非常感激。我目前正在 Win7 和 IE8 的背景下执行此操作,但我认为这并不重要。

4

2 回答 2

2

抱歉,我花了这么长时间才跟进这个问题的答案。

我写了一篇文章,详细介绍了如何诱使 Windows 允许您调整大于虚拟屏幕分辨率的窗口大小,从而允许 PrintWindow 或 IViewObject::Draw 等函数捕获整个客户区(即浏览器画布)。

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

该技术的实际实现可以在我在 GitHub 上的 SnapsIE 存储库中找到(用户名:nirvdrum)。不幸的是,我没有足够的业力来发布两个超链接。该存储库是从文章链接的。

于 2010-03-25T13:48:55.790 回答
0

这很可能是一种 IE 优化,可以避免绘制超出要求的内容。您也许可以滚动窗口并在循环中调用 IViewObject::Draw 而不会发生任何动画?

我很惊讶 Windows 将最大尺寸限制为当前屏幕分辨率。你确定吗 ?

于 2010-02-04T09:39:17.123 回答