C #Windows.Forms.WebBrowser缩放

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

我希望在’Document’属性级别找到这样做的方法,但是没有可以使用的缩放或高度/宽度/大小属性(在浏览器级别,但我不想调整控件本身的大小) 。

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

浏览器缩放问题

吉米基本上是对的。 但我会继续为您提供完整的代码/解释。

您想要向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链接

  • OLECMDID
  • OLECMDEXECOPT
  • ShDcVw.InternetExplorer
  • ExecWB方法
  • IE架构
  • IE托管和重用
  • 与非托管代码互操作
  • COM Interop架构
  • COM Interop简介(VB)
  • 将类型库导入为程序集
  • COM到.Net数据类型

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

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