您的位置:首页 > 其它

通过 WebBrowser 获取网页截图

2015-01-27 16:03 267 查看
本文介绍通过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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: