日期:2014-05-17  浏览次数:21636 次

!!用webbrowser控件对网页截图是空白的~急!!
这两天要对一个网页进行后台截图,相当于网页快照,后台保存图片即可。
目前想到的方法是添加一个webbrowser控件,然后对控件抓图进行保存。
新建的wpf工程默认界面是mainwindow,这个上边用toolbox添加的webbrowser是从windows.control中继承来的,没有documentcompletted事件(想通过这个事件判断网页是否加载完毕);
所以新建了一个form1类,在form界面上用toolbox添加了webbrowser控件,这次是从weindows.form中继承来的。有上述事件。

用了以下两种类似的方法截图,不知道为什么截图保存的图片都是空白的,没有网页内容,请教!

1 通过以下函数进行截图(这个貌似只能在mainwindow里用,form1里不知道对其第一个参数设什么)
private void SaveToImage(FrameworkElement p_FrameworkElement, string p_FileName)
        {
            System.IO.FileStream fs = new System.IO.FileStream(p_FileName, System.IO.FileMode.Create);
            RenderTargetBitmap bmp = new RenderTargetBitmap((int)p_FrameworkElement.ActualWidth, (int)p_FrameworkElement.ActualHeight, 96.0, 96.0, PixelFormats.Pbgra32);
            bmp.Render(p_FrameworkElement);
            BitmapEncoder encoder = new PngBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(bmp));
            encoder.Save(fs);
            fs.Close();
            fs.Dispose();

2 还尝试了在form1代码中用如下代码截图:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            System.Drawing.Size mySize = webBrowser1.Document.Window.Size;
            Bitmap myPic = new Bitmap(mySize.Width, mySize.Height);
            Rectangle myRec = new Rectangle(0, 0, mySize.Width, mySize.Height);
            webBrowser1.Size = mySize;
            webBrowser1.DrawToBitmap(myPic, myRec);
            myPic.Save("E:\\aaaaaa.jpg");
            System.Windows.Forms.MessageBox.Show("Ok");
        }
新手,分不多,请大家多多帮忙
如果有不用webbrowser控件就可以后台截图的方法,也请告诉我,谢谢

------解决方案------