///
///网页生成生成图片帮助类///
public classThumbnail
{///
///网页生成的图片///
privateBitmap _bitmap;private string_url;private int_browserWidth, _browserHeight, _tWidth, _tHeight;///
///是否使用,指定的宽度和高度///
public bool IsCustumer { get; set; }///
///指定网页地址,使用页面的body的高度///生成图片的,宽度和高度与body相同///
/// 网页地址
/// 浏览器宽度
public Thumbnail(string url, intbrowserWidth)
{
IsCustumer= false;
_url=url;
_browserWidth=browserWidth;
}///
///初始化构造///
/// 网页地址
/// 浏览器宽度
/// 浏览器高度
/// 生成图片宽度
/// 生成图片高度
public Thumbnail(string url, int browserWidth, int browserHeight, int tWidth, inttHeight)
{
IsCustumer= true;
_url=url;
_browserWidth=browserWidth;
_browserHeight=browserHeight;
_tWidth=tWidth;
_tHeight=tHeight;
}///
///获取网页的图片///
/// 网页地址
/// 浏览器宽度
/// 浏览器高度
/// 生成图片宽度
/// 生成图片高度
public static Bitmap GetThumbnail(string url, int browserWidth, int browserHeight, int tWidth, inttHeight)
{
Thumbnail thumb= newThumbnail(url, browserWidth, browserHeight, tWidth, tHeight);returnthumb.GenerateImage();
}///
///生成图片信息///
///
publicBitmap GenerateImage()
{
Thread thread= new Thread(newThreadStart(_GenerateImage));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();return_bitmap;
}///
///使用WebBrowser生成图片///
private void_GenerateImage()
{
WebBrowser browser= newWebBrowser();
browser.ScrollBarsEnabled= false;
browser.ScriptErrorsSuppressed= false;
browser.Navigate(_url);
browser.DocumentCompleted+= newWebBrowserDocumentCompletedEventHandler(_DocumentCompleted);while (browser.ReadyState !=WebBrowserReadyState.Complete)
Application.DoEvents();
browser.Dispose();
}///
///页面加载完成事件///
private void _DocumentCompleted(objectsender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser browser= sender asWebBrowser;if(IsCustumer)
{//生成自定义宽度和高度的图片
browser.ClientSize = newSize(_browserWidth, _browserHeight);
_bitmap= newBitmap(browser.Bounds.Width, browser.Bounds.Height);
browser.DrawToBitmap(_bitmap, browser.Bounds);
_bitmap= (Bitmap)_bitmap.GetThumbnailImage(_tWidth, _tHeight, null, IntPtr.Zero);
}else{//生成默认body宽度和高度的图片(最常用)
_browserHeight = 5000;if (browser.Document.Body != null)
{
_browserHeight=browser.Document.Body.OffsetRectangle.Height;
browser.ClientSize= newSize(_browserWidth, _browserHeight);
Rectangle bodyRect=browser.Document.Body.OffsetRectangle;
_bitmap= newBitmap(_browserWidth, bodyRect.Height);
browser.BringToFront();
browser.DrawToBitmap(_bitmap, bodyRect);
_bitmap= (Bitmap)_bitmap.GetThumbnailImage(_browserWidth, bodyRect.Height, null, IntPtr.Zero);
}else{
browser.ClientSize= newSize(_browserWidth, _browserHeight);
_bitmap= newBitmap(_browserWidth, _browserHeight);
browser.BringToFront();
browser.DrawToBitmap(_bitmap,new Rectangle(0,0,_browserWidth,_browserHeight));
_bitmap= (Bitmap)_bitmap.GetThumbnailImage(_browserWidth, _browserHeight, null, IntPtr.Zero);
}//_bitmap = (Bitmap)_bitmap.GetThumbnailImage(bodyRect.Width, bodyRect.Height, null, IntPtr.Zero);
}
}
}