日期:2014-05-17  浏览次数:20507 次

请问网页如何截图?
搜索了很多相关文章看,基本上都在说用WebBrowser组件,但关键WebBrowser内的一个方法DrawToBitmap,我添加了这个组件后竟然找不到。是不是和IE版本有关系?还是vs.net版本?我是IE6,VS.NET2003。。
因为我要做的是在服务器端生成一个文章内容的缩略图(和兴奋校园网差不多),直接绘制发现HTML代码无法应用。所以我想大概需要浏览器来解析这些HTML代码,然后截图。不知道有没有更好的办法。


这个问题困扰我两天了,还希望知道的朋友指点一二。。感激不尽。。

------解决方案--------------------
代码
var mainwin = document.getElementById("main-window");
if (!mainwin.getAttribute("xmlns:html"))
mainwin.setAttribute("xmlns:html", "http://www.w3.org/1999/xhtml");

var content = window.content
var desth = content.innerHeight + content.scrollMaxY;
var destw = content.innerWidth + content.scrollMaxX;

// Unfortunately there is a limit:
if (desth > 16384) desth = 16384;

var canvas = document.createElementNS("http://www.w3.org/1999/xhtml", "html:canvas");
var ctx = canvas.getContext("2d");

canvas.height = desth;
canvas.width = destw;
ctx.drawWindow(content, 0, 0, destw, desth, "rgb(0,0,0)");
internalSave(canvas.toDataURL("image/jpeg", "quality=80"),
null,
"saved_page.jpg",
null,
"image/jpeg",
true,
null,
null,
null,
false);


如果想保存成PNG
最后一个函数换成

代码
internalSave(canvas.toDataURL(),
null,
"saved_page.png",
null,
"image/png",
true,
null,
null,
null,
false);

代码来源:http://board.mozest.com/thread-23644-1-1
------解决方案--------------------
你也可以看看这个

http://download.csdn.net/source/1180046
------解决方案--------------------
private WebBrowser _webBrowser; 
protected void Page_Load(object sender, EventArgs e)
{
string url = "";
webBrowser = new WebBrowser();
_webBrowser.ScrollBarsEnabled = false; 
_webBrowser.Navigate(url);
_webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Completed);

while (_webBrowser.ReadyState != WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents(); 
}
}


public void Completed(object sender, WebBrowserDocumentCompletedEventArgs e)
{
_webBrowser.Width = _webBrowser.Document.Body.ScrollRectangle.Width;
_webBrowser.Height = _webBrowser.Document.Body.ScrollRectangle.Height;
using (Bitmap bmp = new Bitmap(_webBrowser.Width, _webBrowser.Height))
{
_webBrowser.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
bmp.Save("C:\\Capture.png", ImageFormat.Png);
}
}
参考
------解决方案--------------------
探讨
奇怪了,还是WebBrowser,可我引用了这个对象,里面明明没有关键的DrawToBitmap方法啊。问题出在哪里呢??

------解决方案--------------------
WebBrowser不是Com里面的那个AxWebbrowser,而是工具栏里面自带那个