C# winform webBrowser页面缩放方案汇总

遇到一个需求,需要对浏览器进行放大缩小,经过查找资料,有三种方案,其中第三种比较满足需求

方案一:

通过设置zoom的值:

//myWeb为对应webBrowser的名称
//1.25为缩放比例
myWeb.Document.Body.Style = "zoom:1.25"

不足:文字放大的同时,整个页面也跟着变大,不符合放大内容的需求

方案二:

通过模拟键盘ctrl+加号  和ctrl+减号进行放大缩小

//myWeb为需要缩放的webBrowser
myWeb.Focus();SendKeys.Send("^{+}");// [CTRL]+[+] 放大 
myWeb.Focus();SendKeys.Send("^-");// [CTRL]+[-] 缩小 
myWeb.Focus();SendKeys.Send("^0");// [CTRL]+[0] 100%缩放

不足:只能放大缩小特定的比例(125% 150% 170%...)

方案三:

参考:WPF WebBrowser控件放大/缩小支持? | 码农家园

/// 
/// 缩放浏览器
/// 
/// 缩放比例 值需再10到1000之间
private void DoMoreShow(int moreRate)
{
    try
    {
        //myWeb 需要缩放的webBrowser
        var wb = myWeb.ActiveXInstance.GetType();
        object o = moreRate;
        //OLECMDID.OLECMDID_OPTICAL_ZOOM
        object zoom = 63;
        //OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER
        object tuser = 2;
        wb.InvokeMember(
            @"ExecWB",
            BindingFlags.InvokeMethod,
            null,
            mtWeb.ActiveXInstance,
            new[]
                {
                zoom,
                tuser,
                o,
                o
                });
    }
    catch (Exception e)
    {
    }
}

方案三可以实现 10%到1000%的缩放,某些需要引用的地方,我都调整为固定参数

你可能感兴趣的:(C#,WebBrowser,c#,开发语言,winform,webBrowser)