不谈(其实很简单的)通用桌面窗口截图方式,我们看看使用webbrowser如何将网页截图存档///
///下载网页,产生图片
///
///要下载的网页地址。
///初始窗口宽度,用来强制网页初始排版。
///网页下载完毕,等待网页异步渲染的时间。
///回调,返回产生的位图对象。
publicstaticvoid网页生成图片(thisUriuri,intwidth,intmillisecondsTimeout,Action[B]callback)
{
varbrw=newWebBrowser{Width=width,ScrollBarsEnabled=false,ScriptErrorsSuppressed=false};
brw.DocumentCompleted+=(s,e)=>
{
if(brw.ReadyState==WebBrowserReadyState.Complete)
{
ThreadPool.QueueUserWorkItem(h=>
{
Thread.Sleep(millisecondsTimeout);
brw.BeginInvoke((Action)delegate
{
Rectangler=brw.Document.Body.ScrollRectangle;
brw.Height=r.Height;
brw.Width=r.Width;
varbitMapPic=newBitmap(r.Width,r.Height);
brw.DrawToBitmap(bitMapPic,r);
brw.Dispose();
callback(bitMapPic);
});
});
}
};
brw.Navigate(uri);
}
假设我要截取http://v.6.cn/824151的图片,它几乎所有数据和flash视频都是异步加载的,那么我延迟5秒钟再来截图,那么我可以写网页生成图片(newUri("http://v.6.cn/824151"),1200,5000,(img)=>
{
保存img到本地;
});
实际上只要客户端可以显示出来,人家随便查找网页上的div等等element,随便自动截图,而且还能自动录像。
|