C# Windows.Forms.WebBrowser 缩放
C# Windows.Forms.WebBrowser scaling
我的 Windows 表单应用程序中有一个 WebBrowser 控件,我想更改我正在加载的 HTML 页面的“缩放级别”(在我的例子中是 Bing 地图) .
我希望找到在 'Document' 属性 级别执行此操作的方法,但是没有缩放或 height/width/size 属性 可以玩(有在浏览器级别,但我不想调整控件本身的大小)。
附件是我想做的事情的照片。有什么想法吗?谢谢
Browser zooming issue
吉米基本上是对的。但我会继续为您提供完整的 code/explanation.
您想添加对 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代表缩放level.EG200%缩放。如果你做了 50% 缩放,那就是缩放 out.In 换句话说,小于 100 的值意味着缩小,大于 100 的值意味着放大。可能的值范围为 10-1000。
文档链接
- OLECMDID
- OLECMDEXECOPT
- ShDcVw.InternetExplorer
- ExecWB method
- IE Architecture, IE Architecture 2
- IE Hosting and Re-Use
- Interop with Unmanaged Code
- COM Interop Architecture
- Introduction to COM Interop (VB)
- Importing Type Libraries as Assemblies
- COM To .Net Datatypes
不幸的是,许多 COM 组件是为 C++ 开发人员而不是 C# 编写的,因为 COM 是围绕二进制兼容性的 C++ 范例。因此在 C# 中,我们可以与这些最初用 C++ 编写的 COM 对象互操作。
您必须记住的关于 COM 的另一个技巧是,每次添加新功能时,都会将其添加到新界面。例如。 IHTMLDocument2 IHTMLDocument3, IHTMLDocument4,等等。所以你需要知道你实际想要将你的 COM 对象转换到哪个接口。
我的 Windows 表单应用程序中有一个 WebBrowser 控件,我想更改我正在加载的 HTML 页面的“缩放级别”(在我的例子中是 Bing 地图) .
我希望找到在 'Document' 属性 级别执行此操作的方法,但是没有缩放或 height/width/size 属性 可以玩(有在浏览器级别,但我不想调整控件本身的大小)。
附件是我想做的事情的照片。有什么想法吗?谢谢
Browser zooming issue
吉米基本上是对的。但我会继续为您提供完整的 code/explanation.
您想添加对 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代表缩放level.EG200%缩放。如果你做了 50% 缩放,那就是缩放 out.In 换句话说,小于 100 的值意味着缩小,大于 100 的值意味着放大。可能的值范围为 10-1000。
文档链接
- OLECMDID
- OLECMDEXECOPT
- ShDcVw.InternetExplorer
- ExecWB method
- IE Architecture, IE Architecture 2
- IE Hosting and Re-Use
- Interop with Unmanaged Code
- COM Interop Architecture
- Introduction to COM Interop (VB)
- Importing Type Libraries as Assemblies
- COM To .Net Datatypes
不幸的是,许多 COM 组件是为 C++ 开发人员而不是 C# 编写的,因为 COM 是围绕二进制兼容性的 C++ 范例。因此在 C# 中,我们可以与这些最初用 C++ 编写的 COM 对象互操作。
您必须记住的关于 COM 的另一个技巧是,每次添加新功能时,都会将其添加到新界面。例如。 IHTMLDocument2 IHTMLDocument3, IHTMLDocument4,等等。所以你需要知道你实际想要将你的 COM 对象转换到哪个接口。