遇到一个需求,需要对浏览器进行放大缩小,经过查找资料,有三种方案,其中第三种比较满足需求
方案一:
通过设置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控件放大/缩小支持? | 码农家园
/// <summary>
/// 缩放浏览器
/// </summary>
/// <param name="moreRate">缩放比例 值需再10到1000之间</param>
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%的缩放,某些需要引用的地方,我都调整为固定参数