上周我正在研究项目中的类似功能,请阅读关于此主题的一些帖子,包括您的链接。我想分享我的经验:
该函数的关键部分是System.Windows.Forms.WebBrowser.DrawToBitmap方法。
,但其不支持和不工作
它是支持和工作,但并不总是工作正常。在某些情况下,你会得到一个空白的图像截图(根据我的经验,它加载的HTML越复杂,它越有可能失败。在我的项目中,只有非常简单和格式良好的htmls将被加载到WebBrowser控件,所以我从来没有空白图像)。
无论如何,我还没有100%完美的解决方案。这里是我的核心代码的一部分,并希望它有帮助(它在ASP.NET MVC 3上工作)。
using (var browser = new System.Windows.Forms.WebBrowser())
{
browser.DocumentCompleted += delegate
{
using (var pic = new Bitmap(browser.Width, browser.Height))
{
browser.DrawToBitmap(pic, new Rectangle(0, 0, pic.Width, pic.Height));
pic.Save(imagePath);
}
};
browser.Navigate(Server.MapPath("~") + htmlPath); //a file or a url
browser.ScrollBarsEnabled = false;
while (browser.ReadyState != System.Windows.Forms.WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents();
}
}
如果你的意思是SO线程,如何链接到他们,并指定为什么他们每个人没有工作 –
有你马特。顺便说一句,你知道答案吗? – user1873073
@ user1873073请张贴您的部分代码。特别是在您正在加载文档和文档完成事件的情况下。 – scartag