zoukankan      html  css  js  c++  java
  • C# WebBrowser的DrawToBitmap方法 截取网页保存为图片

         bool mark = true;
            private void btnOpen_Click(object sender, EventArgs e)
            {
                mark = true;
          //动态创建WebBrowser控件             WebBrowser webBrowser = new WebBrowser();             webBrowser.Navigate(textBox1.Text);             webBrowser.ScrollBarsEnabled = false;  //禁用滚动条             webBrowser.ScriptErrorsSuppressed = false;  //禁用脚本错误             webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);         }
           void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                if (!mark) return;  //可能页面内含有多次请求,只执行一次
                WebBrowser webBrowser = (WebBrowser)sender;
           
           // 确认网页已经加载完毕             while (webBrowser.ReadyState != WebBrowserReadyState.Complete)             {                 Application.DoEvents();             }             // 网页加载完毕才保存             if (webBrowser.ReadyState == WebBrowserReadyState.Complete)             {                 // 获取网页高度和宽度,也可以自己设置                 int width = webBrowser.Document.Body.ScrollRectangle.Width < 1024 ? 1024 : webBrowser.Document.Body.ScrollRectangle.Width;                 int height = webBrowser.Document.Body.ScrollRectangle.Height < 768 ? 768 : webBrowser.Document.Body.ScrollRectangle.Height;                 // 调节webBrowser的高度和宽度 -- (只用动态创建的WebBrowser才可以修改其大小,不知道为什么)                 webBrowser.Height = height;                 webBrowser.Width = width;                 //滚动整个网页 设置此元素的上边缘或下边缘与此文档窗口对齐为止---这样可以截取网页滚动条中的内容                 webBrowser.Document.Body.ScrollIntoView(true);                  Bitmap bitmap = new Bitmap(width, height);  // 创建高度和宽度与网页相同的图片                 Rectangle rectangle = new Rectangle(0, 0, width, height);  // 绘图区域                 webBrowser.DrawToBitmap(bitmap, rectangle);  // 截图                 // 保存图片                 bitmap.Save(@"D:/" + System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".jpg");                 pictureBox1.Image = bitmap as Image;             }             mark = false;         }
  • 相关阅读:
    持续集成(Continuous Integration),
    python的几个有趣点
    C++语言发展历史 & 基础知识
    [C++] Windows下的socket编程(这是一个简单的TCP/IP例子)
    office app 代码简析之 task pane app
    佳言玩具
    数据的图形可视化[R语言结果GML引发出来的调查]
    收藏的一系列教程帖子,很适合有一定基础,想要进阶的同学
    各种排序算法总结
    三层架构+存储过程实现分页
  • 原文地址:https://www.cnblogs.com/xinyus/p/3372913.html
Copyright © 2011-2022 走看看