我很难根据满载页面的内容尝试编程确定web浏览器的宽度和高度。我需要此信息来捕获网页的屏幕截图。
这发生在按钮点击事件
中wbNY.Navigate(new Uri("http://www.website.com"), "_self");
wbNY.DocumentCompleted += wbNY_DocumentCompleted;
这是我的文档完成代码
private void wbNY_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url == wbNY.Url)
{
if (wbNY.ReadyState == WebBrowserReadyState.Complete)
{
DoPageChecks();
}
}
}
在DoPageChecks中我调用此方法
TakeScreenshot(wbNY);
这是我的TakeScreenshot方法
protected void TakeScreenshot(WebBrowser wb)
{
Size pageSize = new Size(wb.Document.Window.Size.Width,wb.Document.Window.Size.Height)
}
我的截图代码工作正常,所以我只是展示了我想要获取web浏览器内容的高度和宽度的所有内容,以便我可以截取正确尺寸的屏幕截图。
我也试过
Size pageSize = new Size(wb.Document.Body.ScrollRectangle.Width,wb.Document.Body.ScrollRectangle.Height)
但这也没有给出正确的值。
更具体地说,当实际结果应该接近800px +
时,高度将变为0,有时甚至是〜20px答案 0 :(得分:2)
最终我继续前进,发现mshtml有获取宽度/高度的工具。
最终截图方法:
protected void TakeScreenshot(WebBrowser wb)
{
mshtml.IHTMLDocument2 docs2 = (mshtml.IHTMLDocument2)wbNY.Document.DomDocument;
mshtml.IHTMLDocument3 docs3 = (mshtml.IHTMLDocument3)wbNY.Document.DomDocument;
mshtml.IHTMLElement2 body2 = (mshtml.IHTMLElement2)docs2.body;
mshtml.IHTMLElement2 root2 = (mshtml.IHTMLElement2)docs3.documentElement;
int width = Math.Max(body2.scrollWidth, root2.scrollWidth);
int height = Math.Max(root2.scrollHeight, body2.scrollHeight);
// Resize the control to the exact size to display the page. Also, make sure scroll bars are disabled
wb.Width = width;
wb.Height = height;
Bitmap bitmap = new Bitmap(width, height);
wb.DrawToBitmap(bitmap, new Rectangle(0, 0, width, height));
bitmap.Save(SaveImgDirectory + filename);
}
答案 1 :(得分:0)
您希望获得ActualHeight和ActualWidth,它们会返回Window的渲染高度和宽度,如果您正在截取屏幕截图,则可以使用此内容。