如何使用C#和WebKit.NET截取完整的网站截图?我正在使用WebKit.NET将浏览器组件集成到我的C#应用程序中。问题是我只能用屏幕截图捕获浏览器窗口的可见部分。有没有办法捕获整个页面的屏幕截图?似乎通过使用NativeMethods.SendMessage可能有点可能,尽管这会弄乱消息队列,但您可以使用http://cutycapt.sourceforge.net/或http://iecapt.sourceforge.net/或http://labs.awesomium.com/capturing-web-pages-with-c-net/?我改用WebBrowser;ScrollBarsEnabled=false让我捕获整个页面。这是一些代码:protectedoverridevoidRender(HtmlTextWriterwriter){StringBuilderbuilder=newStringBuilder();HtmlTextWriterhtw=newHtmlTextWriter(newStringWriter(builder));基础渲染(htw);字符串html=builder.ToString();_生成(html);}privatevoid_Generate(stringhtml){varbrowser=newWebBrowser{ScrollBarsEnabled=false};DisplayHtml(html,浏览器);browser.DocumentCompleted+=WebBrowser_DocumentCompleted;while(browser.ReadyState!=WebBrowserReadyState.Complete)Application.DoEvents();浏览器.Dispose();}privatevoidDisplayHtml(stringhtml,WebBrowserbrowser){browser.Navigate("about:blank");if(browser.Document!=null){浏览器.Document.写(字符串。空);}浏览器.DocumentText=html;试一下:以上是C#学习教程:HowtocaptureacompletewebsitescreenshotwithC#andWebKit.NET?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——usingSystem.IO;使用系统绘图;使用System.Drawing.Imaging;使用系统线程;使用系统.Windows.Forms;公众号yte[]皮字节;privatevoidcapture_Click(objectsender,EventArgse){makepicture(txtURL.Text.Trim());pictureBox1.Visible=true;pictureBox1.Image=ByteToImage(picbytes);}privatevoidmakepicture(stringurl){Threadthread=newThread(delegate(){using(WebBrowserbrowser=newWebBrowser()){browser.ScrollBarsEnabled=false;browser.AllowNavigation=true;browser.Navigate(url);浏览器.Width=1024;browser.Height=1575;browser.DocumentCompleted+=newWebBrowserDocumentCompletedEventHandler(DocumentCompleted);while(browser.ReadyState!=WebBrowserReadyState.Complete){System.Windows.Forms.Application.DoEvents();}}});thread.SetApartmentState(ApartmentState.STA);线程。开始();线程.加入();}privatevoidDocumentCompleted(objectsender,WebBrowserDocumentCompletedEventArgse){WebBrowserbrowser=senderasWebBrowser;使用(Bitmapbitmap=newBitmap(browser.Width,browser.Height)){browser.DrawToBitmap(bitmap,newSystem.Drawing.Rectangle(0,0,browser.Width,browser.Height));使用(MemoryStreamstream=newMemoryStream()){bitmap.Save(stream,System.Drawing.Imaging.ImageFormat.Png);byte[]bytes=stream.ToArray();picbytes=字节;}}}publicstaticBitmapByteToImage(byte[]blob){MemoryStreammStream=newMemoryStream();byte[]pData=blob;mStream.Write(pData,0,Convert.ToInt32(pData.Length));位图bm=newBitmap(mStream,false);mStream.Dispose();返回bm;}本文收集自网络,不代表立场。如涉及侵权请点击维权联系管理员删除如需转载请注明出处:
