其他分享
首页 > 其他分享> > cefshrp测试:CefSharp.WinForms和CefSharp.OffScreen

cefshrp测试:CefSharp.WinForms和CefSharp.OffScreen

作者:互联网

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

ChromiumWebBrowser WebBrowser;

private async void Form1_Load(object sender, EventArgs e)
{
var settings = new CefSettings()
{
UserAgent = "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Mobile Safari/537.36",
};

//Perform dependency check to make sure all relevant resources are in our output directory.
/// Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);


string html = File.ReadAllText(@"D:\baidu.html")
;// cefsharp提供的浏览器控件,一般用它充满窗口就搞定了
WebBrowser = new ChromiumWebBrowser(@"D:\baidu.html") //"http://www.163.com")
{
// 填充整个父控件
Dock = DockStyle.Fill
};
//WebBrowser.LoadHtml(html);
///WebBrowser.FrameLoadEnd += new EventHandler<FrameLoadEndEventArgs>(FrameEndFunc);

// 添加到窗口的控件列表中
this.panel1.Controls.Add(WebBrowser);


//等待内容完成加载
///await WebBrowser.WaitForInitialLoadAsync();

Console.WriteLine("2加载完成 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));


//using (Bitmap myImage = new Bitmap(panel1.Width, panel1.Height))
//{
// Graphics gp1 = Graphics.FromHwnd(panel1.Handle);
// gp1.DrawImage(myImage, panel1.ClientRectangle);
// //panel1.DrawToBitmap(myImage, panel1.ClientRectangle);
// myImage.Save("C:\\11.image");
//}


//创建一个bitmap类型的bmp变量来读取文件。
Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);
//新建第二个bitmap类型的bmp2变量,我这里是根据我的程序需要设置的。
Bitmap bmp2 = new Bitmap(panel1.Width, panel1.Height, PixelFormat.Format16bppRgb555);
//将第一个bmp拷贝到bmp2中
Graphics draw = Graphics.FromImage(bmp2);
draw.DrawImage(bmp, panel1.ClientRectangle);
bmp.Save("C:\\11.image");
draw.Dispose();
bmp.Dispose();//释放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”);

 


//网页截图保存地址
//string imgName = "CefSharp_screenshot" + DateTime.Now.Ticks + ".jpg";
//imgName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), imgName);

//try
//{
// var cefbrowserHost = WebBrowser.GetBrowserHost();

// //You can call Invalidate to redraw/refresh the image
// cefbrowserHost.Invalidate(PaintElementType.View);

// //获取内容尺寸
// var contentSize = await WebBrowser.GetContentSizeAsync();
// var viewport = new Viewport
// {
// Height = contentSize.Height,
// Width = contentSize.Width,
// Scale = 1.0
// };

// ///MessageBox.Show("截图...");
// //Console.WriteLine("截图...");
// //var buffer = await browser.CaptureScreenshotAsync();

// //完整网页截图
// //var buffer = await browser.CaptureScreenshotAsync(viewport: viewport);
// var buffer = await WebBrowser.CaptureScreenshotAsync(CaptureScreenshotFormat.Jpeg, 100, viewport);

// System.IO.File.WriteAllBytes(imgName, buffer);
// Console.WriteLine("截图保存完成");
//}
//catch (Exception ex)
//{
// string msg = ex.Message;
// Console.WriteLine("截图异常:" + msg);
//}

 


}
private void FrameEndFunc(object sender, FrameLoadEndEventArgs e)
{
MessageBox.Show("加载完毕");
this.BeginInvoke(new Action(() =>
{
String html = WebBrowser.GetSourceAsync().Result;
//richTextBox1.Text = html;
}));
}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
// 结束时要销毁
Cef.Shutdown();
}

}

标签:CefSharp,myImage,bmp,Width,cefshrp,WinForms,WebBrowser,new,panel1
来源: https://www.cnblogs.com/LeiYang5237/p/16328934.html