对于WPF WebBrowser控件,有没有办法复制Internet Explorer的缩放功能?
换句话说,Internet Explorer的菜单视图>缩放> 75%,使网页的比例为75% . 有没有办法让一个嵌入在WPF应用程序中的Web浏览器控件做同样的事情?
我看过这篇文章:WPF WebBrowser - How to Zoom Content?
但它似乎只是缩放页面而不是页面内容 .
对于WPF WebBrowser控件,有没有办法复制Internet Explorer的缩放功能?
换句话说,Internet Explorer的菜单视图>缩放> 75%,使网页的比例为75% . 有没有办法让一个嵌入在WPF应用程序中的Web浏览器控件做同样的事情?
我看过这篇文章:WPF WebBrowser - How to Zoom Content?
但它似乎只是缩放页面而不是页面内容 .
4 回答
我是这样做的:
由于WPF WebBrowser控件不直接公开ActiveX,因此所有服务提供程序都会公开ActiveX . 除此之外,它与alexei的解决方案几乎相同 .
这不是一个确切的答案,因为它适用于WinForms控件,但如果您决定在WindowsFormsHost而不是WPF控件中使用它,这可能会很有用,因为它暴露的方式太少而无法使用 .
您可以在ActiveX实例上通过ExecWB使用OLE命令:
OLECMDID_ZOOM
用于文本大小,OLECMDID_OPTICAL_ZOOM
用于光学缩放 . 例如,一些说明:
需要参考Interop.SHDocVw程序集
该命令仅在文档加载后成功
可以通过
OLECMDID_GETZOOMRANGE
检索pvaIn的范围参考命令列表在MSDN
我经历过这种奇怪的行为,似乎只发生在非96 dpi上 . 启动时,呈现的文本大小与OLECMDID_ZOOM状态中存储的大小不对应 . 设置值(到任何值)并没有解决差异:渲染的大小仍然是[存储的大小2] . 当光学变焦设置为100%时,文本大小的差异消失(文本大小在缩放到100%后明显缩小) . 这在IE中并没有发生,也许这只是我环境中一个奇怪的神器 - 但只是fyi .
当使用其他解决方案时,我总是会遇到错误
我在this page找到了一个适合我的解决方案:
OLECMDID_OPTICAL_ZOOM
为63,OLECMDEXECOPT_DONTPROMPTUSER
为2 .