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;

 

发布了74 篇原创文章 · 获赞 0 · 访问量 3063

猜你喜欢

转载自blog.csdn.net/netyou/article/details/104710280