如何从WPF中呈现的HTML中获取快照

时间:2014-01-07 15:21:13

标签: c# wpf webbrowser-control screenshot

有没有办法拍摄渲染的html的快照,即从webBrowser控件获取并输出image object

是否可能by code除了使用webbrowser之外,bcoz我认为在源渲染为输出之前,它需要在屏幕上可见。

我有html字符串,其中包含一些图片文字和表格。高度近700px,在其他情况下可能更少或更多。

请指导我。

1 个答案:

答案 0 :(得分:0)

使用RenderTargetBitmap实例。这允许您渲染控件而不在屏幕上显示它。小心给它宽度和高度;)

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.rendertargetbitmap%28v=vs.110%29.aspx

来自MSDN的示例

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Globalization;

namespace SDKSample
{
    public partial class RenderTargetBitmapExample : Page
    {
        public RenderTargetBitmapExample()
        {

        Image myImage = new Image();
        FormattedText text = new FormattedText("ABC",
                new CultureInfo("en-us"),
                FlowDirection.LeftToRight,
                new Typeface(this.FontFamily, FontStyles.Normal, FontWeights.Normal, new FontStretch()),
                this.FontSize,
                this.Foreground);

        DrawingVisual drawingVisual = new DrawingVisual();
        DrawingContext drawingContext = drawingVisual.RenderOpen();
        drawingContext.DrawText(text, new Point(2, 2));
        drawingContext.Close();

        RenderTargetBitmap bmp = new RenderTargetBitmap(180, 180, 120, 96, PixelFormats.Pbgra32);
        bmp.Render(drawingVisual);
        myImage.Source = bmp;

        // Add Image to the UI
        StackPanel myStackPanel = new StackPanel();
        myStackPanel.Children.Add(myImage);
        this.Content = myStackPanel;
        }
    }
}