V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yueji
V2EX  ›  程序员

C# Windows Cef 框架如何用 WPF 原生控件?

  •  
  •   yueji · 319 天前 · 1336 次点击
    这是一个创建于 319 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司用 C# 开发 Windows 端的软件.
    因为一开始定了前后端这样的结构去开发.所以采用了 C# + Cef 框架.
    但是现在软件端需要实时渲染图片和视频.CEF HTML 的性能在这块表现很拉.
    测试过原生 WPF 的控件渲染性能表现很好.
    ------
    如何在 C# Cef 框架内,部分使用 WPF 控件混合开发呢?
    求有熟悉的讲一下..
    7 条回复    2024-01-13 10:40:05 +08:00
    nikenidage1
        1
    nikenidage1  
       319 天前
    这个。。。cef 就是内嵌个 chrome 啊,你都不如用 webview
    考虑下推倒重来吧
    yueji
        2
    yueji  
    OP
       319 天前
    @nikenidage1 推倒重来太费事了.如果能在 cef 里用 wpf 原生控件就完美解决了.
    yueji
        3
    yueji  
    OP
       319 天前
    @nikenidage1 之前就是用的 Webview2.
    但是 Webview2 在某些用户的电脑上,直接白屏初始化失败.极少,但是会存在.无解.
    且为了支持 WIN7.所以切到了 cef.
    lujiaxing
        4
    lujiaxing  
       319 天前
    不是, CEF 是能独立存在的么? 它总有个宿主吧? 不是 WinForms 就是 WPF 啊!! 你要单独搞一个界面显示 WPF 的图表那你就单独建窗体呀! 跟 CEF 有什么关系呢?? 你们是用 CEFSharp 还是 chromiumfx ??

    但无论如何这些都不是单独存在的, 都是要有宿主的...
    clorischan
        5
    clorischan  
       319 天前
    没用过 Cef,
    但是应该可以在 HTML 里放一个空白元素.
    获取并持续监测这个元素的在 Cef 内的坐标, 并转换为相对 WPF MainWindow 的坐标.
    然后自定义一个 UserControl 用来展示你需要高性能渲染的内容,
    再根据上面获取的坐标, 放在 Cef 控件上层覆盖住空白 HTML 元素.
    adenlin
        6
    adenlin  
       319 天前
    意思是在 webview 里面使用 wpf 控件么?那基本上不太可能
    osr 理论上可以做到,但是既然你问出这个问题了那估计你们大概率掌握不了这方面的技术...
    crazytudou
        7
    crazytudou  
       319 天前
    //注入对象给 html 调用
    var obj = new JsEvent(System.Threading.SynchronizationContext.Current);
    webBrowser.JavascriptObjectRepository.Register("wform", obj, isAsync: false, options: BindingOptions.DefaultBinder);
    public class JsEvent
    {
    private System.Threading.SynchronizationContext context;
    public JsEvent(System.Threading.SynchronizationContext context)
    {
    this.context = context;
    }
    //给 html 调用
    public void testmsg(string type)
    {
    //
    }
    }

    前端这么调用(js)
    wform.testmsg("test");

    你都用 cef 了,winform 和 wpf 应该都没啥区别吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5444 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:30 · PVG 15:30 · LAX 23:30 · JFK 02:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.