我使用webBrowser加载一个写好的html,设置html中center的尺寸为794 * 1123private void GetWebBrowserScreen(WebBrowser wb, int width, int height) {
foreach (HtmlElement f in wb.Document.GetElementsByTagName("center")) {
//将元素绝对定位到页面左上角
f.Style = "position: absolute; z-index: 9999; top: 0px; left: 0px";
//抓图
_image = new Bitmap(f.ClientRectangle.Width, f.ClientRectangle.Height);
wb.DrawToBitmap(_image, new Rectangle(new Point(), f.ClientRectangle.Size));
break;
}
}得到的图片尺寸是794 * 1123,但原来794 * 1123可以显示下的内容,在图片中显示不下了,求解……

解决方案 »

  1.   

    是不是位置偏移了,你绘制时设置起始点位置试试
     wb.DrawToBitmap(_image, new Rectangle(new Point(0,0), f.ClientRectangle.Size));
      

  2.   

    起始点没有偏移,上和左都是完整的,就是右边和下边显示不全……,webBrowser难道有默认的dpi?
      

  3.   

    差多少?
    要不你把宽度和高度加大点
     wb.DrawToBitmap(_image, new Rectangle(0,0,f.ClientRectangle.Size.Width+10,f.ClientRectangle.Size.Height+10)); 
      

  4.   

    我在设置浏览器的时候设置了大小,我附上代码
    WebBrowser wb = new WebBrowser();
    wb.ScrollBarsEnabled = false;
    wb.Navigate(_url);
    wb.DocumentCompleted += delegate(object sender, WebBrowserDocumentCompletedEventArgs e) {
    wb.ClientSize = new Size(794, 1123);
    wb.ScrollBarsEnabled = false;
    _image = new Bitmap(wb.Bounds.Width, wb.Bounds.Height);
    _image.SetResolution(96, 96);
    //控件置顶
    wb.BringToFront();
    //wb.DrawToBitmap(_image, wb.Bounds);
    this.GetWebBrowserScreen(wb, _width, _height);
    OnWebBrowserBitmapCreated(_image);
    };
    while (wb.ReadyState != WebBrowserReadyState.Complete) {
    //重新绘制窗体加载
    Application.DoEvents();
    }
    foreach (HtmlElement f in wb.Document.GetElementsByTagName("center")) {
    //将元素绝对定位到页面左上角
    f.Style = "position: absolute; z-index: 9999; top: 0px; left: 0px";
    //抓图
    _image = new Bitmap(794, 1123);
    Size size = new Size(794, 1123);
    wb.DrawToBitmap(_image, new Rectangle(new Point(), f.ClientRectangle.Size));
    break;
    }