说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

C#实现生成网站快照缩略图片

HTML文档下载 WORD文档下载 PDF文档下载
C#利用WebBrowser控件实现生成网站快照缩略图片

下载源代码

我总是在想如何把我的博客网页生成缩略图快照。昨天我有一些空闲时间来思考如何在C#中完成。我用WebBrowser控件实现了这个功能,下面是我的实现方法。


我创建了四个区域,一个是WebBrowser控件,另外三个是Bitmap对象分别对应3中不同尺寸的缩略图。使用这三个位图对象其实是没有必要的,我们可以只用一个对象显示三种不同的尺寸,但它使我保存按钮的代码减少了一些。在构造函数中初始化WebBrowser控件的大小为800*600,这是绝大多数网站最小的可见尺寸,我也去掉了滚动条和初始化DocumentCompleted事件委托。

private WebBrowser wb = new WebBrowser();  private Bitmap screenshot300x225;  private Bitmap screenshot200x150;  private Bitmap screenshot100x75;    public MainForm()  {      InitializeComponent();        wb.Height = 600;      wb.Width = 800;      wb.ScrollBarsEnabled = false;      wb.DocumentCompleted += new          WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);  }  

WebBrowser的DocumentCompleted事件处理中可以生成截图快照,这是唯一可以调用DrawToBitmap方法的地方。DrawToBitmap是从WebBrowserBase对象继承的方法,MSDN上说“该API支持.NET Framework基础结构,但不适合直接在代码中使用”,所以它不在IntelliSense中可见。它有两个参数,第一个是存储截图的位图对象,第二个Rectangle对象定义了截图的范围。三个位图对象初始化并显示在PictureBox控件中。

 

void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)  {      Bitmap bmp = new Bitmap(800, 600);        wb.DrawToBitmap(bmp,          new Rectangle(wb.Location.X, wb.Location.Y, wb.Width, wb.Height));        screenshot100x75 = new Bitmap(bmp, 100, 75);      screenshot200x150 = new Bitmap(bmp, 200, 150);      screenshot300x225 = new Bitmap(bmp, 300, 250);        smallPictureBox.Image = screenshot100x75;      mediumPictureBox.Image = screenshot200x150;      largePictureBox.Image = screenshot300x225;        this.Cursor = Cursors.Default;  }    private void captureButton_Click(object sender, EventArgs e)  {      this.Cursor = Cursors.WaitCursor;        wb.Navigate(urlTextBox.Text);  }    private void saveSmallButton_Click(object sender, EventArgs e)  {      if (screenshot100x75 != null)      {          if (saveFileDialog1.ShowDialog(this) == DialogResult.OK)              screenshot100x75.Save(saveFileDialog1.FileName);      }  }    private void saveMediumButton_Click(object sender, EventArgs e)  {      if (screenshot200x150 != null)      {          if (saveFileDialog1.ShowDialog(this) == DialogResult.OK)              screenshot200x150.Save(saveFileDialog1.FileName);      }  }    private void saveLargeButton_Click(object sender, EventArgs e)  {      if (screenshot300x225 != null)      {          if (saveFileDialog1.ShowDialog(this) == DialogResult.OK)              screenshot300x225.Save(saveFileDialog1.FileName);      }  }  

 

 

 

Delphi下编程实现中文输入 Delphi用于读写的三种文件类型 Delphi之三十六计之输入处理篇 DELPHI中DFM文件与文本文件转换 Delphi中用于读写的文件类型 RichEdit的自动格式化-Delphi资料 RichEdit中实现查找功能-Delphi资料 表格上所有元件载入后的事件-Delphi资料 充分利用Windows API扩展Delphi函数 传递焦点的五种方法-Delphi资料 从 实 例 看 Delphi 4 中 的 动 态 得到Memo中当前的行列号-Delphi资料 改变RichEdit的游标位置-Delphi资料 回车代替Tab移动输入焦点-Delphi资料 获取Windows临时路径-Delphi资料 获取当前鼠标位置的类名和句柄-Delphi资料 检测存在打印机-Delphi资料 将BMP文件转换为JPG文件-Delphi资料 类似链接的效果-Delphi资料 利用COM技术实现外壳扩展的属性页-Delphi资料 留意DELPHI的命名规则 判断元件有哪一特定的属性-Delphi资料 全局热键-Delphi资料 让自己的程序防破解-Delphi资料 如何查找一个目录下的某些特定的文件-Delphi资料 如何在全屏幕显示一个AVI文件-Delphi资料 删除文本文件中的多余空格-Delphi资料 实现Hint的分行提示-Delphi资料 实现应用程序的文件拖放功能-Delphi资料 死循环的控制权转让-Delphi资料 添加桌面快捷-Delphi资料 请问怎样用命令代替手工来打开treeview的下一层节点? JBuilder运行与数据库连接程序的问题 增样用ASP调用sql server数据库。 谁有Tomcat中使用连接池的完整的例子,主要是在代码中如何关闭连接池? 寻求,批量处理图像尺寸大小的控件!!(vb和vb.net)100分 关于asp与jsp的兼容 急救 请教,我安装了java sdk后又安装了oracle 8,为什么安装后就有‘java.exe 错误,内存只读的错误’? 如何把數據庫中查詢得到的表導入到excel生成報表? 请问用MAIL如何写信 我也来出一道智力题,30分钟内做不出的只有高中生水平 如何在VC中打开别一个窗口或DIALOG 请问Sendmail是否是SOLARIS中必要的 关于代码动态编译的问题,bucher (无人永生) 以及所有会这方面的人请进!!!急!!! Duvessa发布基于用例的估算工具 log4j问题 Borland发布C++ BuilderX整合UML 关于动态创建数据窗口的问题,请各位大虾帮忙,答对的给100分 请教关于打包的问题? 【【【 asp.net 中Excel现程怎么杀掉!!!! 】】】 如何在HTML中嵌入ftpClient功能 請求幫助 一个关于父子进程的问题,请大家帮帮忙好吗?急死我了! 【调查】看看你对流行音乐到底懂得多少? 有没有办法禁止类似用CCPROXY的非法代理? CSS的使用问题 怎样适用odbc连接远程access? DelPhi的错误! 如何通过共享Model上网? 用FileSystemObject 写多行txt,如何实现换行写入??? 你的邮箱已经被别人使用,请使用一个DOMINO服务器,如何解决? 清空文本文件 我编写了一个dos批处理文件bat,要在bat文件运行后自动关闭dos窗口怎么办? 急救:机器出问题了,大家帮忙看看 谁能谈谈XP的激活问题!? 有问题的问题1 有问题的问题 安装visual studio.net 2003 的问题? 急件!请教了,如何在一个字符串中提取第n次出现的字符? weblogic及EJB属于中间层的吗? 到水园第一件事就是看看斑竹有没有换,嘻嘻,还有谁也是这样的? win2000装好后,设了本地连接的属性,和别的机器一样的设,可就是PING 不通网关 哪有“VB.NET高级编程”和“ADO.NET高级编程”下载?? 请各位帮忙找一个用asp.net写的日历,急用 小弟是菜鸟,请问一下svrmgrl是什么,9I中有吗? 文章分页,而且文章中有大小不等的图片,该如何去做 求《三国霸业2》简体版下载地址? 诸位高手,我碰到一个很棘手ASPNETMENU的问题!急需解决!!(100分)献上! vfw下的视频采集和图象截取的问题请教! 求 《家园-惊世浩劫》简体版 关于浏览器的问题 刘备被刘表安排到新野来守卫荆州的门户刘备被刘表安排到新野来守卫荆州的门户,刘表为了让刘备、关羽、张飞、糜竺等人安心守卫新野,决定赠送4匹速度不同的好马给刘备.从荆州到新野,4 什么叫付之一笑? 珠联璧合 one-month的意思 ( ) come on time!A Did B Does C Is D Do 安非他命简介 GREENIE 的意思,跟环境有关.是安非他命,但还有一个意思.跟环境有关.又安非他命的意思,我要写一个GREENIE这个角色的报告。GREENIE是一个人物角色 谁看过安非他命?求安非他命的视频, 帮我取个英文名吧!我的名是‘毅’一直取不到好听的英文名,我是单名,姓姜名毅.除了陈奕讯的这个英文名,就没有别的了吗? Do you actually and how feel to me 翻译成中文是什么意思?不懂英文! 帝国主义为什么不支持孙中山? 浙江部分行政区划调整绍兴县上虞市撤县伊媒:中伊就220亿石油欠款达成协议法国两名记者命丧马里英15岁少年欲滑雪闯南极德或成“五只眼”新成员国 美德协议分口腔护理有利癌症治疗智利美女候选人 抱娃上街拉选票印度女婴家传怪病 身体多毛酷似狼孩巴塔任命临时首领 巴基斯坦高度警戒印度明日探测火星“变形”却不“金刚”英汉患病被迫宅居街头巷尾唱大戏 汝州第二届地摊戏文化天津滨海新区英特尔联合众创空间启用旅游产业将迎黄金爆发期 行业投资深度2016中国旅游日“秦岭与黄河对话”浙江口岸首次截获球胸虎天牛成都高新区出台中西部首个贫困救助办法【G20峰会前瞻】龙永图:中国要推动新疆吉布库镇千亩牡丹香飘满园 特色种深圳加快特色航空城”建设 老航站楼辽宁省长海县调优养殖模式 前四月水产习近平“两山”重要思想和生态文明思想异界茅山学徒红颜贪欢回到三国当王爷如花的日子茅山志异狐狸传奇一代佞臣游戏发展中我的二次世界大战我的卡哇依之旅(一女N童)英雄无敌之传奇英雄台东商业街旅游太清宫旅游第一海水浴场旅游白鹭岛旅游黑山头城址旅游石板街旅游神农顶旅游香溪源旅游古隆中旅游丹江口旅游襄阳城旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘