2010-01-29 106 views
3

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

此外,我试图将控制器的大小设置为允许无需滚动即可显示整个内容的大小,但Windows会将最大大小限制为当前屏幕分辨率,这样只会让我部分获取该大小。

任何帮助将不胜感激。我目前正在Win7和IE8的环境下做这件事,但我认为这不应该太重要。

回答

2

对不起,花了这么长的时间才跟上这个答案。

我写了一篇文章,详细说明如何欺骗Windows,允许您调整大于虚拟屏幕分辨率的窗口大小,允许PrintWindow或IViewObject :: Draw等功能捕获整个客户区(即浏览器画布) 。 (:nirvdrum用户名)

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

实际上,在实现该技术可以在我的SnapsIE库在GitHub上找到。不幸的是,我没有足够的业力发布两个超链接。该存储库链接从文章虽然。

0

这很可能是一个IE优化,避免绘制超过要求。您可能能够滚动窗口并在不发生任何动画的情况下在循环中调用IViewObject :: Draw?

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

+0

是的,我很确定。我设法通过为CALL_WND_PROC安装一个Windows钩子并从那里注入一个新的消息处理器来解决它。在该处理器中,我可以修改WM_GETMINMAXINFO消息以更改最大大小。 – nirvdrum 2010-02-07 19:43:54