CEF3加载网页部分地方是英文问题 本地化设置

现象:在浏览器中打开网页,在极速模式下显示是汉字,在兼容模式下显示是英文,但是在cef中打开是英文,包括日历控件打开也是英文。
解决办法:
在CefSettings中,有两个参数,分别是locale和accept_language_list,CEF默认使用的是en-US,需要将这两个参数设置为zh-CN,代码如下:

const char* loc = "zh-CN";
CefString(&settings.locale).FromASCII(loc);
CefString(&settings.accept_language_list).FromASCII(loc);
cef_string_from_ascii(loc, strlen(loc), &settings.locale);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 CefSharp 的 LoadHandler 来检测网页是否完成。在 LoadHandler 中,您可以使用 OnLoadEnd 方法来确定页面是否已经完毕。一旦页面完成,您可以调用 CefSharp 的截图 API 来获取当前页面的截图。 以下是一个示例代码,展示如何使用 CefSharp 来检测页面是否完成并获取页面截图: ``` using CefSharp; using CefSharp.WinForms; using System; using System.Drawing; using System.Threading.Tasks; namespace CefSharpScreenshotExample { public class ScreenshotExample { private ChromiumWebBrowser browser; public void Start() { // 初始化 CefSharp Cef.Initialize(new CefSettings()); // 创建 ChromiumWebBrowser 实例 browser = new ChromiumWebBrowser("https://www.example.com"); // 注册 LoadHandler 以处理页面事件 browser.LoadingStateChanged += OnLoadingStateChanged; // 等待浏览器窗口完成 browser.HandleCreated += async (sender, e) => { await WaitForBrowserToInitialize(); await CaptureScreenshot(); }; } private async Task WaitForBrowserToInitialize() { // 等待浏览器窗口完成,这通常需要一些时间 while (!browser.IsBrowserInitialized) { await Task.Delay(100); } } private async Task OnLoadingStateChanged(object sender, LoadingStateChangedEventArgs e) { // 页面完成时,获取截图 if (!e.IsLoading) { await CaptureScreenshot(); } } private async Task CaptureScreenshot() { // 等待页面完成 await Task.Delay(1000); // 获取页面截图 var bitmap = await browser.ScreenshotAsync(); // 保存截图到本地文件 bitmap.Save("screenshot.png"); // 显示截图 ShowScreenshot(bitmap); } private void ShowScreenshot(Bitmap bitmap) { // 在 UI 线程中显示截图 browser.Invoke(new Action(() => { var form = new Form(); form.BackgroundImage = bitmap; form.ClientSize = bitmap.Size; form.FormBorderStyle = FormBorderStyle.FixedSingle; form.StartPosition = FormStartPosition.CenterScreen; form.Show(); })); } } } ``` 请注意,上述代码中使用了异步方法,因此需要在 C# 5.0 或更高版本中使用 async/await 功能。另外,截图操作需要在 UI 线程中进行,因此需要使用 Invoke 方法来切换到 UI 线程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值