开发者

Save screenshot of WPF web browser Frame

I have a Frame element displaying an html page in my WPF application, and would like to save a screenshot of the Frame as an image.

With the help of the google, I have this code:

Size size = new Size(PreviewFrame.Actu开发者_运维百科alWidth, PreviewFrame.ActualHeight);
PreviewFrame.Measure(size);
PreviewFrame.Arrange(new Rect(size));

var renderBitmap = new RenderTargetBitmap(
            (int)size.Width,
            (int)size.Height,
            96d,
            96d,
            PixelFormats.Pbgra32);
renderBitmap.Render(PreviewFrame);

But all I ever get is a blank image.

Any thoughts on how to fix this code, and/or another way to capture a web page as an image in my app?


Turns out the GDI Graphics class has a CopyFromScreen method that works well and captures the Frame's contents:

var topLeftCorner = PreviewFrame.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)PreviewFrame.ActualWidth, (int)PreviewFrame.ActualHeight);

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

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

screenShot.Save(@"C:\screenshot.png", ImageFormat.Png);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜