2012-02-09 2 views
3

Мне нужно получить скриншот страницы, которая загружает WPF Webrowser Control на лету в памяти.Как получить снимок экрана управления WPF Webrowser?

Основным требованием является то, что веб-браузер WPF скрыт или даже не реализован в XAML.

Это можно сделать? Если да, то как?

-------- ПРОЕКТ РЕШЕНИЯ -----------

var topLeftCorner = MainBrowser.PointToScreen(new System.Windows.Point(0, 0)); 
var topLeftGdiPoint = new System.Drawing.Point((int)topLeftCorner.X, (int)topLeftCorner.Y); 
var size = new System.Drawing.Size((int)MainBrowser.ActualWidth, (int)MainBrowser.ActualHeight); 

Bitmap screenShot = new Bitmap((int)MainBrowser.ActualWidth, (int)MainBrowser.ActualHeight); 

using (var graphics = Graphics.FromImage(screenShot)) 
{ 
    graphics.CopyFromScreen(topLeftGdiPoint, new System.Drawing.Point(), 
     size, CopyPixelOperation.SourceCopy); 
} 

screenShot.Save(@"D:\Temp\screenshot.png"); 
+0

Просто случайная идея, мне интересно, если это будет работать, если отобразить WebBrowser, но из экрана лол. (Я не знаю, как это сделать, но я хотел бы знать, как это сделать) –

+1

Скрытые/сложенные элементы не могут быть скопированы как графика в память буфера обмена ... ваш экранный видео-буфер havent визуализировал его так, как вы ожидаете этого скопировать? –

ответ

1

Как идея, вы можете использовать виртуальный принтер, установленный на вашем компьютере и распечатать как образ.

PrintDialog p = new PrintDialog(); 
p.PrintVisual(webBrowser1,"webBrowser1"); 
3
var topLeftCorner = MainBrowser.PointToScreen(new System.Drawing.Point(0, 0)); 
var topLeftGdiPoint = new System.Drawing.Point((int)topLeftCorner.X, (int)topLeftCorner.Y); 
var size = new System.Drawing.Size((int)MainBrowser.ActualWidth, (int)MainBrowser.ActualHeight); 
Bitmap screenShot = new Bitmap((int)MainBrowser.ActualWidth, (int)MainBrowser.ActualHeight); 
using (var graphics = Graphics.FromImage(screenShot)) 
{ 
    graphics.CopyFromScreen(topLeftGdiPoint, new System.Drawing.Point(), size, CopyPixelOperation.SourceCopy); 
} 
screenShot.Save(@"D:\Temp\screenshot.png"); 
Смежные вопросы