通过 WebBrowser 获取网页截图

本文介绍通过WinForm中的控件WebBroswer获取网页截图。这个方法可以截取到大于屏幕区域的网页截图,但是对于网页上的Flash或者一些控件无法获取到图像。因为是WinForm的控件,所以未在WPF中测试。

在界面上加入一个文本框和一个按钮,文本框用于输入地址。在按钮按下的事件处理函数中初始化一个WebBrowser并打开网页,但它不在界面上显示。

 

 1  ///   <summary>
 2  ///  按钮按下事件处理函数
 3  ///   </summary>
 4  ///   <param name="sender"></param>
 5  ///   <param name="e"></param>
 6  private   void  SaveSnapshot_Click( object  sender, EventArgs e)
 7  {
 8      WebBrowser webBrowser  =   new  WebBrowser();   //  创建一个WebBrowser
 9      webBrowser.ScrollBarsEnabled  =   false ;   //  隐藏滚动条
10      webBrowser.Navigate(address.Text);   //  打开网页
11      webBrowser.DocumentCompleted  +=   new  WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);   //  增加网页加载完成事件处理函数
12  }


在网页加载完成的处理函数中获取截图,调节图片大小并保存。

 

 1  ///   <summary>
 2  ///  网页加载完成事件处理函数
 3  ///   </summary>
 4  ///   <param name="sender"></param>
 5  ///   <param name="e"></param>
 6  void  webBrowser_DocumentCompleted( object  sender, WebBrowserDocumentCompletedEventArgs e)
 7  {
 8      WebBrowser webBrowser  =  (WebBrowser)sender;
 9 
10       //  网页加载完毕才保存
11       if  (webBrowser.ReadyState  ==  WebBrowserReadyState.Complete)
12      {
13           //  获取网页高度和宽度,也可以自己设置
14           int  height  =  webBrowser.Document.Body.ScrollRectangle.Height;
15           int  width  =  webBrowser.Document.Body.ScrollRectangle.Width;
16 
17           //  调节webBrowser的高度和宽度
18          webBrowser.Height  =  height;
19          webBrowser.Width  =  width;
20 
21          Bitmap bitmap  =   new  Bitmap(width, height);   //  创建高度和宽度与网页相同的图片
22          Rectangle rectangle = new  Rectangle( 0 , 0 ,width,height);   //  绘图区域
23          webBrowser.DrawToBitmap(bitmap, rectangle);   //  截图
24 
25           //  保存图片对话框
26          SaveFileDialog saveFileDialog  =   new  SaveFileDialog();
27          saveFileDialog.Filter  =   " JPEG (*.jpg)|*.jpg|PNG (*.png)|*.png " ;
28          saveFileDialog.ShowDialog();
29 
30          bitmap.Save(saveFileDialog.FileName);   //  保存图片
31      }
32  }

 

示例下载(Visual Studio 2010)

转载于:https://www.cnblogs.com/snowdream/archive/2011/05/16/get-webpage-snapshot-by-webbrowser-control.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取 WebBrowser 控件中当前加载的网页信息,可以使用 WebBrowser 控件提供的一些属性和方法。下面是一些常见的方法: 1. 获取网页的 HTML 内容:可以使用 WebBrowser 控件的 Document 属性来获取网页的 HTML 内容。例如: ```csharp string html = webBrowser1.DocumentText; ``` 上述代码会将当前加载的网页的 HTML 内容保存在字符串变量 html 中。 2. 获取网页的 URL:可以使用 WebBrowser 控件的 Url 属性来获取当前加载的网页的 URL。例如: ```csharp string url = webBrowser1.Url.ToString(); ``` 上述代码将当前加载的网页的 URL 保存在字符串变量 url 中。 3. 获取网页的标题:可以使用 WebBrowser 控件的 DocumentTitle 属性来获取当前加载的网页的标题。例如: ```csharp string title = webBrowser1.DocumentTitle; ``` 上述代码将当前加载的网页的标题保存在字符串变量 title 中。 4. 获取网页中指定元素的信息:可以使用 WebBrowser 控件的 Document 属性来访问网页的 DOM,并通过 DOM API 获取指定元素的信息。例如,要获取页面中 id 为 "myElement" 的元素的文本内容,可以使用以下代码: ```csharp HtmlElement element = webBrowser1.Document.GetElementById("myElement"); string text = element.InnerText; ``` 上述代码将指定元素的文本内容保存在字符串变量 text 中。 需要注意的是,要获取网页信息,必须确保 WebBrowser 控件已经完成了加载。你可以在 WebBrowser 控件的 DocumentCompleted 事件中执行相关代码,以确保在网页加载完成后再获取相关信息。此外,还需要处理可能发生的异常情况,例如当网页未加载或发生错误时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值