在完成博文“PS网页设计教程XXIV——从头设计一个漂亮的网站”后。

出于习惯,打开之前“利用Webbrowser类实现超长网页的截屏的实现(解决报错不能截取的难题)”中的代码的程序,截取博文作为资料保存。

不料,虽然程序很完美的执行了,但是截的图确有问题

参数显示,该截图有46688高,但是在截图中却出现了三次博文的抬头。也就是说,每大约在20000的地方,又重头开始截图了。这个是之前没有出现的情况。

出了问题了?立马打开代码,看看有没有什么问题?

            Dim R As Rectangle = New Rectangle(0, 0, _Web.Width, _Web.Height)

_Web.Document.Window.Parent.ScrollTo(0, _CapTop)
            If _Web.Document.Body.Parent.ScrollTop = _CapTop Then
                _Bmp = New Bitmap(_Web.Width, _Web.Height)

_Web.DrawToBitmap(_Bmp, R)
            Else
                _Web.Height = _Web.Height - (_CapTop - _Web.Document.Body.Parent.ScrollTop)
                _Web.Document.Window.Parent.ScrollTo(0, _CapTop)
                _Bmp = New Bitmap(_Web.Width, _Web.Height)
                R.Height = _Web.Height
                _Web.DrawToBitmap(_Bmp, R)
            End If

关于截图的核心代码如上所示。由于在之前的博文提到,WebBrowser类的DrawToBitmap方法对于高度很高的图片支持度不太好。因此,我采用了分段截图的方法。以本文为例,网页的高度46688,分三段截图。

第一次,将网页滚动到_Web.Document.Window.Parent.ScrollTo(0, 0)。截取高20000的图

第二次,将网页滚动到_Web.Document.Window.Parent.ScrollTo(0, 20000)。截取高20000的图

第三次,将网页滚动到_Web.Document.Window.Parent.ScrollTo(0, 40000)。截取剩下的高6688的图

WebBrowser类实际上是封装了系统中的IE,而DrawToBitmap方法是将浏览器窗口中的图截到Bitmap对象

按理说,上面的代码没有啥问题。之前,截取其他的图都没啥问题。

抱着试一试的心情,打开以前的PS网页教程,再次截取一下,悲剧又出现了,截图中再次多次出现抬头,截图失败。

分析一下失败的原因。

首先,代码没有报错,说明,没有语法上的错误。

在单步调试中,发现,_Web.DrawToBitmap(_Bmp, R)被调用了三次。只是原本截图正常的代码,现在不工作了,每次截取的都是同一部分。

难道是_Web.Document.Window.Parent.ScrollTo(0, _CapTop)方法失效,在调用该方法后,立马查看_Web.Document.Body.Parent.ScrollTop的值,发现的确是改变了,说明_Web.Document.Window.Parent.ScrollTo(0, _CapTop)方法没有失效,运作正常。

那问题出在哪儿呢?原本好好的代码,现在运行咋不正常呢?

原本好好的代码,现在运行不正常。说明环境变了。环境?嗯,想起来了,之前用的是IE9,现在系统刚刚升级到IE10。会不会是IE内核的变化,导致代码运作失常呢?

果断卸掉IE10,回到IE9。再打开代码运行重新截图。现在正常了,看来是IE10的问题

来看看,可能出现的问题的地方

之前说过WebBrowser类实际上是IE的封装。你系统中是IE9,它调用IE9的方法;你系统中是IE10,它调用IE10的方法。

而两者唯一的差别可能就是这句话了

_Web.DrawToBitmap(_Bmp, R)

我的推测是

IE9及之前的版本,_Web.DrawToBitmap(_Bmp, R)方法只截取当前浏览器窗口中的图,对于超出浏览器的部分则无法截取,该方法的参数R以浏览器的左上角为基准的。

IE10的版本,可能由于内核的升级,_Web.DrawToBitmap(_Bmp, R)方法可以截取超出浏览器窗口部分,该方法的参数R以网页的左上角为基准的。故执行了三次_Web.DrawToBitmap(_Bmp, R)的方法,每次截取的都是同一部分的图(以网页的左上角为基准)

如果要使截图正常,要么修改R的参数;或者IE10提供了DrawToBitmap的重载方法,提供了可以设置截图位置的参数。由于没有找到相关的资料,故只能是推测。

有网友能提供相关的IE10的资料么?

还有一个问题,再从IE10到IE9时,发现IE9不太正常了,像QQ离线下载的功能就不能使用了。下载了一个IE9的安装包,说是比我系统中的IE9版本低,没法安装。有没有办法能修复IE9,使IE9正常运作?

小议IE10下的DrawToBitmap方法的更多相关文章

  1. Aspnetpage ie10下 __dopost方法未找到 不能翻页的问题

    1.问题分析: 没有__dopost 的原因是因为没有 ie10下 页面里 没有这个 方法,和 2个 input 标签,ie10 没有解析出来,所以就不能翻页了. 2.解决办法:(缺什么补什么,将这个 ...

  2. FCKEditor在IE10下的不兼容问题解决方法

    环境介绍:FCKEditor 版本 2.x.x 问题:IE10 下FCKEditor不兼容,显示不出来 关键词:不同于其他方法之处是第一个关键点,其他网友的正则表达式不对 解放方法:(可以直接< ...

  3. 小议 js 下字符串比较大小

    原文:小议 js 下字符串比较大小 之前群里有人问如何比较两个时间大小,他的时间格式是 2014-08-08 而不是 2014-8-8.所以我给的方法是 直接比较,如: var a = "2 ...

  4. .NET在IE10下的回传BUG修复

    以前我也没注意到,直到有次公司新配了台机器做测试服务器,在测试过程中意外发现凡是涉及PostBack的操作仅在IE10下都无效,其他版本浏览器都没有问题,本机调试也没有问题. 这也就是说在程序相同的情 ...

  5. [原创]如何解决IE10下CkEditor报 --- SCRIPT5007: 无法获取未定义或 null 引用的属性“toLowerCase”

    如何解决IE10下CkEditor报 --- SCRIPT5007: 无法获取未定义或 null 引用的属性“toLowerCase” 错误 如果你的IE是IE10,且不是运行在IE的兼容模式你也许会 ...

  6. svn服务器地址变换以后,mac下的处理方法

    svn服务器地址变换之后,mac下的处理方法 svn服务器地址变换之后,mac下的处理方法 1.进入终端,进入项目所在的文件夹下: cd 项目位置/ 2.查看svn信息 svn info 3.输出结果 ...

  7. 重写类的Equals以及重写Linq下的Distinct方法

    当自定义一个类的时候,如果需要用到对比的功能,可以自己重写Equals方法,最整洁的方法是重写GetHashCode()方法. 但是,这个方法只适用于对象自身的对比(如if(a==b))以及字典下的C ...

  8. opencv直线检测在c#、Android和ios下的实现方法

    opencv直线检测在c#.Android和ios下的实现方法 本文为作者原创,未经允许,不得转载 :原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/ ...

  9. DAY2 Python 标准库 -> Getpass 模块 -> 命令行下输入密码的方法.

    getpass 模块 getpass 模块提供了平台无关的在命令行下输入密码的方法. getpass(prompt) 会显示提示字符串, 关闭键盘的屏幕反馈, 然后读取密码. 如果提示参数省略, 那么 ...

随机推荐

  1. STM32 F4 DAC DMA Waveform Generator

    STM32 F4 DAC DMA Waveform Generator Goal: generating an arbitrary periodic waveform using a DAC with ...

  2. LPC1800 and LPC4300 MCUs

    LPC1800 Series microcontrollers At 180 MHz, LPC1800 Series microcontrollers combine the industry's f ...

  3. Context Switching on the Cortex-M3

    http://coactionos.com/embedded%20design%20tips/2013/10/09/Tips-Context-Switching-on-the-Cortex-M3/ T ...

  4. 使用winrar自解压功能制作安装包

    参考文献: bat脚本设置文件的只读属性:http://wenda.tianya.cn/question/0f484c28ffd8d4e9 bat脚本创建internet快捷方式:http://www ...

  5. Win7电脑开启局域网连接和共享过程中出现的"您可能没有权限使用网络资源"的解决办法

    Win7电脑开启局域网连接和共享 http://bbs.ithome.com/thread-334567-1-1.html http://jingyan.baidu.com/article/6dad5 ...

  6. EditPlus(4.0.0.395)中文免激活绿色版

    EditPlus一套功能强大,可取代记事本的文字编辑器,拥有无限制的撤消与重做.英文拼字检查.自动换行.列数标记.搜寻取代.同时编辑多文件.全屏幕浏览功能.而它还有一个好用的功能,就是它有监视剪贴板的 ...

  7. OAuth:Access to shared resources via web applications

    A web application which wants to gain access to shared resources should redirect the user to a page ...

  8. gzip格式解压缩

    gzip格式解压缩 有时候网络请求中会出现gzip格式的数据,而我们无法通过常规办法进行解析: 这时候可以使用下面的这个工具来解决这个问题: https://github.com/mattt/Godz ...

  9. [Nginx] Nginx 配置location总结

    cp from : https://www.cnblogs.com/coder-yoyo/p/6346595.html location匹配顺序 "="前缀指令匹配,如果匹配成功, ...

  10. [Web 前端] 流行的JavaScript库 ——jQuery

    cp : https://www.cnblogs.com/zhoushihui/p/5141767.html   1.为了简化 JavaScript 的开发, 一些 JavsScript 库诞生了. ...