com - 如何使用 IViewObject::Draw 渲染 Canvas 的可滚动区域?

标签 com winapi iwebbrowser2

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

此外,我尝试将 Controller 的大小设置为无需滚动即可显示全部内容的大小,但 Windows 将最大大小限制为当前屏幕分辨率,因此只能部分显示。

任何帮助将不胜感激。我目前是在 Win7 和 IE8 环境下执行此操作,但我认为这应该无关紧要。

最佳答案

对不起,我花了这么长时间才跟进这个问题的答案。

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

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

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

关于com - 如何使用 IViewObject::Draw 渲染 Canvas 的可滚动区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2159607/

相关文章:

c++ - 如何正确绘制简单的非客户区(4 px 红色边框)?

c - 我在哪里可以通过 WinApi 找到消息框的标准系统图标?

delphi - 如何在 Delphi 中将事件附加到 IHTMLDocument2 链接元素?

c++ - IWebbrowser2:使用 Uint8array(不循环填充)

.NET COM 互操作 -> 全局异常处理程序

c# - 创建 Excel 应用程序时出现 COM 异常 80040154

C++ out-proc COM 服务器在 VB.NET 中重写并跨 C++ EXE 共享

c++ - Windows 包含文件夹中缺少 vcruntime.h?

c++ - IWebBrowser2 可以将 cookie 存储在用户指定的文件夹中吗?

c# - 在 C# 中实现 DISPID_VALUE 并从 C++ 中调用它