惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy & Cybersecurity Law Blog
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
罗磊的独立博客
F
Fortinet All Blogs
T
Threatpost
Y
Y Combinator Blog
博客园_首页
美团技术团队
Security Latest
Security Latest
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
V
V2EX - 技术
The Cloudflare Blog
L
LINUX DO - 热门话题
博客园 - 司徒正美
Jina AI
Jina AI
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
The Hacker News
The Hacker News
P
Privacy International News Feed
T
The Exploit Database - CXSecurity.com
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence
Latest news
Latest news
NISL@THU
NISL@THU
Google DeepMind News
Google DeepMind News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cisco Blogs
雷峰网
雷峰网
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog RSS Feed
W
WeLiveSecurity
D
DataBreaches.Net
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
TaoSecurity Blog
TaoSecurity Blog
S
Securelist
Help Net Security
Help Net Security

博客园 - Magic.Z

几种可能使 Windows 7 睡眠后自动唤醒的原因 IIS 7.5 下载文件遇到 404.3 试用 Entity Framework Power Tools CTP1 WPF 客户端上传文件到 ASP.NET MVC 网站 开启 IE9 导航声音 WPF 实现屏幕文字提示 - Magic.Z - 博客园 AJAX 网页保留浏览器前进后退等功能 ADO.NET Entity Framework Feature 中的 CodeFirst 创建数据库和实体类 赠送 MSDN 订阅激活卡 在 ASP.NET WebForm 中使用 Route - Magic.Z 在 ASP.NET MVC 中创建自定义 HtmlHelper - Magic.Z 注意防范ASP.NET中可能导致信息泄漏的漏洞 - Magic.Z 在 ASP.NET MVC Web 应用程序中输出 RSS Feeds - Magic.Z 用 Windows Media Center 浏览互联网视频 - Magic.Z WebMatrix 简介 - Magic.Z 打印网页中的 GridView - Magic.Z ASP.NET 网站后台任务 - Magic.Z Visual Studio 2010 中的 MSDN 帮助文档 - Magic.Z 在 ADO.NET Entity Framework 4 中使用枚举 - Magic.Z
通过 WebBrowser 获取网页截图
Magic.Z · 2011-05-16 · via 博客园 - Magic.Z

本文介绍通过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)