如何使用IViewObject :: Draw渲染画布的可滚动区域?

时间:2010-01-29 02:57:41

标签: com winapi iwebbrowser2

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

此外,我试图将控制器的大小设置为允许显示整个内容而不需要滚动的大小,但是Windows将最大大小限制为当前屏幕分辨率,这样只能让我部分地在那里。< / p>

非常感谢任何帮助。我目前正在Win7和IE8的上下文中这样做,但我认为这不重要。

2 个答案:

答案 0 :(得分: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)。不幸的是,我没有足够的业力来发布两个超链接。然而,存储库是从文章链接的。

答案 1 :(得分:0)

IE优化很可能避免绘制超过要求的内容。您可以滚动窗口并在循环中调用IViewObject :: Draw而不会出现任何动画吗?

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