CefSharp的ChromiumWebBrowser截出来的图片是空白

我通过以下代码对打开的网页截图,在WebBrowser中截图正常,但是改为CefSharp的ChromiumWebBrowser截出来的图片是空白的是怎么回事?


browser.FrameLoadEnd += new EventHandler<FrameLoadEndEventArgs>(browser_FrameLoadEnd);

private void browser_FrameLoadEnd(object obj, EventArgs e)
        {
            browser.Height = 1000;
            browser.Width = 1600;
            Bitmap bitmap = new Bitmap(1600, 1000);  // 创建画布大小
            Rectangle rectangle = new Rectangle(0, 0, 1600, 1000);  // 绘图区域
            browser.DrawToBitmap(bitmap, rectangle);
            MemoryStream ms = new MemoryStream();
            bitmap.Save("D:\\test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
        }
再就是我问一下,在不使用WebBrowser的前提下,还有没有其他办法对网页进行截图?

headless browser 还有 PhantomJS、WebKit.NET 等,不过我都没有用过。

gdi其实是截画布,没有什么好的,你还说你解决了,如果panel或者浏览器被覆盖了你将什么都截不到

解决了!!!
我也遇到相同的问题,不过我用了一个容器panel存放cef浏览器,依然截图空白!!不过我搜到另外一个方法截图panel方法,测试可以!!!

嵌入一个浏览器,然后对浏览器内容截图,保存成图片考虑到页面兼容问题,系统自带的浏览器网页浏览器兼容不行,就到网上搜了很多资料www.9iBee.com,WebKit的,cefsharp等,最终决定用cefsharp。但是最终做的时候发现,对面板截图,一直截空白。

方法如下

            Bitmap myImage = new Bitmap(panel1.Width,panel1.Height);
            Graphics gp1 = Graphics.FromHwnd(panel1.Handle);
            panel1.DrawToBitmap(myImage,panel1.ClientRectangle);
            myImage.Save( “C:\\ 11.bmp”);

后来到网上搜到了,另外一个方法,还是对容器面板,测试,居然可以截图了!!方法如下

           图形g1 = panel1.CreateGraphics();
            Image myImage = new Bitmap(this.panel1.Width,this.panel1.Height,g1);
            图形g2 = Graphics.FromImage(myImage);
            IntPtr dc1 = g1.GetHdc();
            IntPtr dc2 = g2.GetHdc();
            BitBlt(dc2,0,0,this.panel1.Width,this.panel1.Height,dc1,0,0,1336376);
            g1.ReleaseHdc(DC1);
            g2.ReleaseHdc(DC2);
            myImage.Save( “C:\\ 11.bmp”);
            pictureBox1.Image = myImage;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值