Captura de tela da página da Web (com controles do Silverlight) programaticamente
Eu tenho uma página da web que exibe alguns controles de luz prateada. Preciso tirar uma captura de tela desta página da Web programaticamente.
Atualmente, usando o controle System.Windows.Forms.WebBrowser para tirar captura de tela.
Forms.WebBrowser funciona bem quando tiro uma captura de tela para páginas normais. No entanto, para as páginas com controles do Silverlight, ele não funciona.
Meu código para captura de tela é o seguinte: Bitmap bitmap = null; using (WebBrowser webBrowser = novo WebBrowser ()) {webBrowser.ScrollBarsEnabled = false; webBrowser.ScriptErrorsSuppressed = true;
// Set the size of the WebBrowser control
webBrowser.Width = width;
webBrowser.Height = height;
// Load the webpage into a WebBrowser control
webBrowser.Navigate(url);
while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
if (width == -1)
{
// Take Screenshot of the web pages full width
webBrowser.Width = webBrowser.Document.Body.ScrollRectangle.Width;
}
if (height == -1)
{
// Take Screenshot of the web pages full height
webBrowser.Height = webBrowser.Document.Body.ScrollRectangle.Height;
}
// Get a Bitmap representation of the webpage as it's rendered in the WebBrowser control
bitmap = new Bitmap(webBrowser.Width, webBrowser.Height);
webBrowser.DrawToBitmap(bitmap, new Rectangle(0, 0, webBrowser.Width, webBrowser.Height));
}