我正在尝试从webBrowser
控件的输出创建图像。以下是我的尝试。并且有点实现我想要的,但问题是图像不是全高,它会在一定高度后修剪。
在图片中你可以看到有4行,但图像是2行半行。请指导。
HTML 1-4在webBrowser
中,在空格1-3之后是从下面的代码创建的图像。
这是代码:
private void WebBrowser1_LoadCompleted(object sender, NavigationEventArgs e)
{
var wb = (WebBrowser)sender;
var htmlDoc = wb.Document as mshtml.HTMLDocument;
if (htmlDoc == null || htmlDoc.body == null) return;
var body = (mshtml.IHTMLElement2)htmlDoc.body;
wb.Height = body.scrollHeight;
wb.Width = body.scrollWidth;
var imgScreen = new Image
{
Width = body.scrollWidth,
Height = body.scrollHeight,
Source = new DrawingImage(VisualTreeHelper.GetDrawing(wb))
};
// Add Image to the UI
StackPanel1.Children.Add(imgScreen);
}
还尝试了以下代码相同的结果:
DrawingVisual vis = new DrawingVisual();
DrawingContext cont = vis.RenderOpen();
cont.DrawDrawing(VisualTreeHelper.GetDrawing(wb));
cont.Close();
RenderTargetBitmap rtb = new RenderTargetBitmap(body.scrollWidth, body.scrollHeight, 96d, 96d, PixelFormats.Default);
rtb.Render(vis);
imgScreen1.Source = rtb;
答案 0 :(得分:1)
WebBrowser
控件实际上只是一个ActiveX控件的包装器,因此不会像常规UIElement一样呈现在屏幕外。
WebBrowser控件在内部实例化本机WebBrowser ActiveX控件。
幸运的是,看起来有一个博客已经解决了这个控件的局限性: