WPF加载自定义WebBrower浏览器控件实现网页缩放

本文介绍了如何在WPF应用中使用自定义的WebBrowser控件来实现网页的加载和缩放功能。通过继承System.Windows.Forms.WebBrowser类,结合WindowsFormsIntegration.dll,能够在WPF窗口中展示功能丰富的Web页面,并能进行动态缩放操作。
摘要由CSDN通过智能技术生成

WebBrowser 类使用户可以在窗体中导航网页,它是一个Winfrom控件,命名空间是System.Windows.Forms。WPF中也有WebBrowser控件,但是与Winform里的相比较功能少很多。所以这里采用WPF加载Winform自定义WebBrower控件的方式,实现一个简单的加载网页并动态缩放的效果。

实现的效果如下:

1、首先添加 System.Windows.Forms.dll和WindowsFormsIntegration.dll程序集

2、新建MyWebBrowser.cs类继承System.Windows.Forms.WebBrowser

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace WebBrowserDemo
{
    class MyWebBrowser : WebBrowser
    {
        #region enums
        public enum OLECMDID
        {
            OLECMDID_OPTICAL_ZOOM = 63,
            OLECMDID_OPTICAL_GETZOOMRANGE = 64,
        }

        public enum OLECMDEXECOPT
        {
            OLECMDEXECOPT_DONTPROMPTUSER,
        }

        public enum OLECMDF
        {
            OLECMDF_SUPPORTED = 1
        }
        #endregion

        #region IWebBrowser
        [ComImport, /*SuppressUnmanagedCodeSecurity,*/
         TypeLibType(TypeLibTypeFlags.FOleAutomation |
                     TypeLibTypeFlags.FDual |
                     TypeLibTypeFlags.FHidden),
         Guid("D30C1661-CDAF-11d0-8A3E-00C04FC9E26E")]
        public interface IWebBrowser
        {
            [DispId(100)]
            void GoBack();
            [DispId(0x65)]
            void GoForward();
            [DispId(0x66)]
            void GoHome();
            [DispId(0x67)]
            void GoSearch();
            [DispId(0x68)]
            void Navigate([In] string Url,
                          [In] ref object flags,
                          [In] ref object targetFrameName,
                          [In] ref object postData,
                          [In] ref object headers);
            [DispId(-550)]
            void Refresh();
            [DispId(0x69)]
            void Refresh2([In] ref object level);
            [DispId(0x6a)]
            void Stop();
            [DispId(200)]
            object Application
            {
                [return:
                 MarshalAs(UnmanagedType.IDispatch)]
                get;
            }
            [DispId(0xc9)]
            object Parent
            {
                [return:
                 MarshalAs(UnmanagedType.IDispatch)]
                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RunnerDNA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值