使用WebBrowser .NET控件放大网页

时间:2009-04-10 16:59:49

标签: .net winforms webbrowser-control

在IE7中,内置了一个“缩放”功能(在状态栏中显示),允许您放大最多400%。我在演示/模拟应用程序中使用WebBrowser .NET控件,需要放大网页。这有可能吗?

(我不想简单地拍一张照片并将其放大,因为我需要使用页面上的链接和按钮。)

如果重要的话,我正在使用.NET 2.0。

6 个答案:

答案 0 :(得分:31)

IE Zoom似乎有一个解决方案涉及覆盖AttachInterfaces中的DetachInterfacesWebBrowser以获取IWebBrowser2接口,然后调用{ {1}} ExecWB

我已经尝试了他的sample code并且似​​乎有效; (删节)相关课程如下:

OLECMDID_OPTICAL_ZOOM

答案 1 :(得分:14)

这对我有用:

int zoomFactor = 300;
((SHDocVw.WebBrowser)webBrowser1.ActiveXInstance).ExecWB(SHDocVw.OLECMDID.OLECMDID_OPTICAL_ZOOM,
    SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, zoomFactor, IntPtr.Zero);

似乎只有在加载文档后才能完成。

答案 2 :(得分:14)

简单提示:

//Zoom IN
webBrowser1.Focus();
SendKeys.Send("^{+}"); // [CTRL]+[+]

//Zoom OUT
webBrowser1.Focus();
SendKeys.Send("^-"); // [CTRL]+[-]

//Zoom 100%
webBrowser1.Focus();
SendKeys.Send("^0"); // [CTRL]+[0]

答案 3 :(得分:9)

您可以使用CSS:

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        webBrowser1.Document.Body.Style = "zoom:50%";
    }

答案 4 :(得分:2)

请注意,传递给Zoom函数的因子值假定值100对应于网页的“正常”大小。较高的因子值意味着您“放大”,因此页面看起来更大。较小的因子值意味着您“缩小”,因此页面看起来更小。 我发现因子之间的合理增量是10。

答案 5 :(得分:0)

对于遇到与我相同问题的任何人来说,这里是对Gloupi的答案的修改,这应该适用于更多的国际系统,其中加号和减号键位于不同的位置,使用小键盘符号键。这也修复了dvorak布局的放大和缩小。

// zoom in
webBrowser1.Focus();
SendKeys.Send("^{ADD}");

// zoom out
webBrowser1.Focus();
SendKeys.Send("^{SUBTRACT}");

// zoom reset
webBrowser1.Focus();
SendKeys.Send("^0");