通过 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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值