Ada*_*ane 7 wpf zoom webbrowser-control
对于WPF WebBrowser控件,有没有办法复制Internet Explorer的缩放功能?
换句话说,Internet Explorer的菜单视图>缩放> 75%,使网页的比例为75%.有没有办法让一个嵌入在WPF应用程序中的Web浏览器控件做同样的事情?
我看过这篇文章: WPF WebBrowser - 如何缩放内容?
但它似乎只是缩放页面而不是页面内容.
小智 6
public partial class TestWindow: UserControl
{
public TestWindow()
{
InitializeComponent();
browser.LoadCompleted += new LoadCompletedEventHandler(browser_LoadCompleted);
}
private void browser_LoadCompleted(object sender, NavigationEventArgs e)
{
try
{
FieldInfo webBrowserInfo = browser.GetType().GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
object comWebBrowser = null;
object zoomPercent = 120;
if (webBrowserInfo != null)
comWebBrowser = webBrowserInfo.GetValue(browser);
if (comWebBrowser != null)
{
InternetExplorer ie = (InternetExplorer)comWebBrowser;
ie.ExecWB(SHDocVw.OLECMDID.OLECMDID_OPTICAL_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, ref zoomPercent, IntPtr.Zero);
}
}
catch (Exception ex)
{
}
}
public void SetBrowser(string url)
{
browser.Navigate(url,null,null,null);
}
internal void Destroy()
{
try
{
if (browser.Parent != null)
{
((Grid)browser.Parent).Children.Remove(browser);
browser.Navigate("about:blank");
browser.Dispose();
browser = null;
}
}
catch { }
}
}
Run Code Online (Sandbox Code Playgroud)
这不是一个确切的答案,因为它适用于 WinForms 控件,但如果您决定在 WindowsFormsHost 而不是 WPF 控件中使用它,则可能会很有用,因为 WPF 控件公开的内容太少而无用。
您可以通过 ActiveX 实例上的 ExecWB 使用 OLE 命令:OLECMDID_ZOOM用于文本大小和OLECMDID_OPTICAL_ZOOM光学缩放。例如,
object pvaIn = 200; // A VT_I4 percentage ranging from 10% to 1000%
var browserInst = ((SHDocVw.IWebBrowser2)(browserContol.ActiveXInstance));
browserInst.ExecWB(SHDocVw.OLECMDID.OLECMDID_OPTICAL_ZOOM,
SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER,
ref pvaIn, IntPtr.Zero);
Run Code Online (Sandbox Code Playgroud)
一些注意事项:
OLECMDID_GETZOOMRANGE