首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将网页渲染为图片

将网页渲染为图片
EN

Stack Overflow用户
提问于 2010-04-05 19:52:04
回答 2查看 4.5K关注 0票数 8

我有一个带有URL的字符串。例如"http://google.com“。

有没有办法把这个页面下载并渲染成图片文件?("test.jpg")

我试图使用WebBrowser控件来下载和渲染图片,但它只在WebBrowser以显示的形式放置时才起作用。在其他方面,它只渲染黑色矩形。

但是我想渲染没有任何视觉效果的图片(创建,激活表单等)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-05 21:48:17

Internet Explorer支持IHtmlElementRenderer接口,该接口可用于将页面呈现到任意设备上下文。下面是一个示例表单,向您展示如何使用它。从项目+添加引用开始,选择Microsoft.mshtml

代码语言:javascript
复制
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication1 {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
      webBrowser1.Url = new Uri("http://stackoverflow.com");
      webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
    }

    void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
      if (!e.Url.Equals(webBrowser1.Url)) return;
      // Get the renderer for the document body
      mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)webBrowser1.Document.DomDocument;
      mshtml.IHTMLElement body = (mshtml.IHTMLElement)doc.body;
      IHTMLElementRender render = (IHTMLElementRender)body;
      // Render to bitmap
      using (Bitmap bmp = new Bitmap(webBrowser1.ClientSize.Width, webBrowser1.ClientSize.Height)) {
        using (Graphics gr = Graphics.FromImage(bmp)) {
          IntPtr hdc = gr.GetHdc();
          render.DrawToDC(hdc);
          gr.ReleaseHdc();
        }
        bmp.Save("test.png");
        System.Diagnostics.Process.Start("test.png");
      }
    }

    // Replacement for mshtml imported interface, Tlbimp.exe generates wrong signatures
    [ComImport, InterfaceType((short)1), Guid("3050F669-98B5-11CF-BB82-00AA00BDCE0B")]
    private interface IHTMLElementRender {
      void DrawToDC(IntPtr hdc);
      void SetDocumentPrinter(string bstrPrinterName, IntPtr hdc);
    }
  }
}
票数 9
EN

Stack Overflow用户

发布于 2011-12-27 13:52:06

不幸的是,MS不推荐在IE 9中使用IHtmlElementRenderer::DrawToDC()。http://msdn.microsoft.com/en-us/library/aa752273(v=vs.85).aspx

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2578190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档