基于CEF的WINFORM浏览器

最近需要研究ThreeJS,下载了之后发现DEMO中很多需要load本地资源的例子不能显示,主要是由于浏览器的跨域访问问题。解决这个问题一般是使用WEB服务器或者允许浏览器跨域访问,但是两种方法都不太方便,尤其是新版的CHROME,使用--allow-file-access-from-files好像也无效了。于是决定用CEFSharp+WINFORM做了个简单的浏览器,可以允许跨域访问,方便本地资源的加载。加载3DS模型的DEMO效果如下:

其中:

CEF = ChromiumEmbedded Framework

CEFSharp = CEF +CSharp

1, 为什么使用CEF:

a)      .NET 自带的WebBrowser是WEB开发人员最讨厌的IE,性能低下而且兼容性差

b)     WEBKIT: 项目已经不再支持

c)      CEF是CHROME内核,性能和兼容性杠杠的。缺点就是带的DLL太多太大,一个发布版应该在150M左右,X86+X64一块就得快300M了。另外EXE加载速度也比较慢,大概10秒左右,需要耐心等待。

2, 为什么使用CEFSharp + WINFORM

a)      主要在WINDOWS上使用,如果有需要在LINUX上用的,可以考虑JAVA CEF

b)     在.NET下,CEFWPF显示性能比CEF WINFORM要差很多,有兴趣的人可以测试一下

 

开发环境:VS2015 + CEFSharp,编译为ANYCPU的DEBUG版

运行环境:.NET FRAMEWORK 4.5.2以上,X86/X64都可以,我只测试了X64版

主要代码:

 

private readonly ChromiumWebBrowser browser;

        public Form1()
        {
            InitializeComponent();
            WindowState = FormWindowState.Maximized;
            browser = new ChromiumWebBrowser("")
            {
                Dock = DockStyle.Fill,
            };

            //Enable cross domain access
            browser.BrowserSettings.FileAccessFromFileUrls = CefState.Enabled;
            browser.BrowserSettings.UniversalAccessFromFileUrls = CefState.Enabled;
            toolStripContainer1.ContentPanel.Controls.Add(browser);
        }

        private void loadBtn_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Multiselect = false;
            dialog.DefaultExt = "*.html";
            dialog.AddExtension = true;
            dialog.Filter = "所有文件(*.*)|*.*";
            
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                String fileName = "file:///" + dialog.FileName.Replace('\\','/');
                LoadUrl(fileName);
                toolStripStatusLabel1.Text = fileName;
            }
        }

 代码太简单了,就不做说明了。感兴趣的可以自行编写,CEF使用很简单,只是设置ANYCPU类型的项目需要处理一下。

 

编译好的EXE放在"https://download.csdn.net/download/firefight/10428301"点击打开链接,本来简单的东西应该是免费下载的,但是好像最少设置为1积分/C币,只能好厚着脸皮收1个,见谅。


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值