見How to render an image using the WebBrowser control
public class HtmlToBitmapConverter
{
private const int SleepTimeMiliseconds = 5000;
public Bitmap Render(string html, Size size)
{
var browser = CreateBrowser(size);
browser.Navigate("about:blank");
browser.Document.Write(html);
return GetBitmapFromControl(browser, size);
}
public Bitmap Render(Uri uri, Size size)
{
var browser = CreateBrowser(size);
NavigateAndWaitForLoad(browser, uri, 0);
return GetBitmapFromControl(browser, size);
}
public void NavigateAndWaitForLoad(WebBrowser browser, Uri uri, int waitTime)
{
browser.Navigate(uri);
var count = 0;
while (browser.ReadyState != WebBrowserReadyState.Complete)
{
Thread.Sleep(SleepTimeMiliseconds);
Application.DoEvents();
count++;
if (count > waitTime/SleepTimeMiliseconds)
{
break;
}
}
}
private WebBrowser CreateBrowser(Size size)
{
return
new WebBrowser
{
ScrollBarsEnabled = false,
ScriptErrorsSuppressed = true,
Size = size
};
}
private Bitmap GetBitmapFromControl(WebBrowser browser, Size size)
{
var bitmap = new Bitmap(size.Width, size.Height);
NativeMethods.GetImage(browser.Document.DomDocument, bitmap, Color.White);
return bitmap;
}
}
然後,它的那麼容易,因爲
var image = new HtmlToBitmapConverter()
.Render(new Uri(urlTextBox.Text), pictureBox.Size);
這是不正確的,他不會要求下載一個圖像。他想要將網頁呈現爲圖像,然後下載它。下載很簡單,渲染不那麼簡單。 – 2011-12-21 20:29:28
哦,真的嗎?我還是不明白。你的意思是任務是圖像的返回,例如,如果視圖有表格,圖像應該包含表格? – Kath 2011-12-21 21:08:15