C #Windows.Forms.WebBrowser扩展

时间:2018-01-01 04:19:40

标签: c# winforms webbrowser-control

我的Windows窗体应用程序中有一个WebBrowser控件,想要更改"缩放级别"我正在加载的HTML页面(在我的案例中是Bing地图)。

我希望在'文件'中找到办法。属性级别,但没有可以使用的缩放或高度/宽度/大小属性(在浏览器级别,但我不想调整控件本身的大小)。

附上我想做的照片。有什么想法吗?感谢。

Browser zooming issue

1 个答案:

答案 0 :(得分:3)

吉米基本上是正确的。但我会继续给你完整的代码/解释。

您希望向Microsoft Internet Controls添加COM引用,以便您可以访问ShDocVw。

using System;
using System.Windows.Forms;

namespace winforms
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            webBrowser1.Navigate(new Uri("http://www.google.com"));
            webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted;
        }

        private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            var browser = webBrowser1.ActiveXInstance as SHDocVw.InternetExplorer;
            browser.ExecWB(SHDocVw.OLECMDID.OLECMDID_OPTICAL_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT,200 ,IntPtr.Zero );
        }
    }
}

200表示缩放级别.EG 200%缩放。如果进行50%缩放,则会缩小。换句话说,小于100的值表示缩小,大于100的值会放大。可能的值范围为10-1000。

Documnetation Links

不幸的是,许多COM组件都是针对C ++开发人员而不是C#编写的,因为COM是围绕二进制兼容性的C ++范例。因此在C#中,我们可以与最初用C ++编写的这些COM对象互操作。

您必须记住的另一个关于COM的技巧是,每次添加新功能时,它都会被添加到新界面中。例如。 IHTMLDocument2 IHTMLDocument3IHTMLDocument4等等。因此,您需要知道实际上要将COM对象转换为哪个接口。