2012-02-09 11 views
3

私はスクリーンショットを取得する必要がありますは、WPF Webrowser Controlをメモリにダウンロードしてダウンロードします。WPF Webrowser Controlのスクリーンショットを取得するには?

基本的な要件は、WPF Webrowserが非表示であるか、XAMLに実装されていないことです。

できますか?はいの場合はどうですか?あなたのPCや印刷などにインストールされている仮想プリンタを使用することができますアイデアとして

-------- DRAFTソリューション-----------

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

隠し/折りたたみ要素をクリップボードのメモリにグラフィックスとしてコピーすることはできません...あなたの画面ビデオバッファはレンダリングされていませんコピーされますか? –

答えて

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"); 
関連する問題