我一直在使用以下代码来获取IWebBrowser2控件内容的图元文件矢量图像,如下所示:
IHTMLElement * pDocBody;
IHTMLDocument2 * pDoc;
... ...
pDoc-> get_body(安培; pDocBody); //获取IHTMLDocument2的body元素
pDocBody-> get_parentElement(安培; pEleParent); pEleParent->的QueryInterface(IID_IHTMLElement2,(无效**)及pRenderEle2); //从
获取要渲染的元素pRenderEle2->的QueryInterface(IID_IHTMLElementRender,(无效**)及pRender); //获取渲染界面
HDC hMetaDC = :: CreateEnhMetaFile(hRefDC,PictFile,& MetaRect,NULL); //得到DC
hr = pRender-> DrawToDC(hMetaDC);
上面的代码与IE6,IE7,IE8完美配合,为浏览器内容提供矢量图像。但上面的DrawToDC调用失败了IE9的Beta版本(在Windows 7上测试,32位),错误代码为:0x8007000e。
我曾尝试使用WM_PRINT和其他绘制方法,但我只能获取位图图像,而不是矢量图像。
任何想法为什么DrawToDC在上面的代码中使用IE9失败,以及是否有任何其他方法可以使用IE9获取矢量图像。
谢谢, 苏巴
谢谢,我担心情况可能如此。你知道是否有一种方法可以暂时将IE9渲染切换到GDI模式。我希望这会降低渲染质量/效率,我应该能够在我当前的应用程序中使用它。
答案 0 :(得分:3)
这只是猜测。 IE9通过硬件加速推动渲染速度更快。我怀疑他们绕过GDI并使用更直接的东西,比如新的DirectWrite和/或Direct2D API。图元文件基本上是GDI调用的序列化。没有GDI调用,就没有太多可以捕获它。所以你可能运气不好。 : - (
答案 1 :(得分:1)
尝试在documentElement(IHtmlDocument3的属性)上执行相同操作 不能保证它会起作用。