我通过以下代码对打开的网页截图,在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;