尝试 WPF 的桌面开发后,感觉 electron 真好 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
wuoty
V2EX    程序员

尝试 WPF 的桌面开发后,感觉 electron 真好

  •  
  •   wuoty 2025 年 7 月 16 日 1339 次点击
    这是一个创建于 199 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前没有学过 .NET ,所有内容都是现学的,需要给老项目做后续的开发和优化,项目是基于 .NET Framework 的 WPF 应用,在一个页面中需要绘制大量的 Path 。

    项目是在 Canvas 的组件中直接挂载 Path ,在挂载组件的时候,系统非常卡,在计算完所有的 Path 后,需要 8 秒左右才能完全显示出来。

    优化为仅绘制可视区域,虽然初次加载变快了,但是滚动条拖动重新渲染还是很卡,并且初次渲染也要花 2s 左右

    后面又对.NET 升级,拉到了.NET8 但是提升效果几乎没有

    也又考虑过利用 Bitmap 去做优化,但是原来的 Path 上面绑定了一堆事件,改起来非常麻烦

    于是就利用了几个技术栈对绘制做了测试:

    • WPF .NET8: 按照微软官方的优化推荐,,利用 StreanGeome 去绘制可视区域内的 Path ,但是每当计算完毕提交 Path 到 Canvas 的时候,还是会卡顿(视图更新慢)

    • avaloniaui:和 WPF 表现差不多,甚至在某些情况下会比 WPF 卡一点点

    • electron: ;利用 React+Vite ,使用 d3.js 在 SVG 下绘制 path ,绘制全部(可视区域/非可视区域),初次计算和渲染一起大概不到 3s ,虽然计算的时间可能比不过 C#,但是绘制出来后,滚动条滑动还是流畅的

    除此之外,Electron 节省了大量的学习和研发成本,刚刚接触 .NET 的时候真的头疼,每次优化的时候都在想,用 electron 能快速解决的事情,在 WPF 里是完全的蒙圈。网上浏览了一圈,很多关于 WPF 渲染性能的问题

    体积大点就大点,不用费劲心思去做渲染优化是真的爽

    xubeiyan
        1
    xubeiyan  
       2025 年 7 月 16 日 via Android
    你不能因为 WPF 某些地方不会用就要去吃 electron 这坨公认的 shit 。打包后体积大,后端语言性能差。QT ,Tauri ,Flutter 哪个不比这个好。如果想举 VS Code 的例子也不看看是谁在玩以及 VSCode 写 Rust 那个语法插件简直慢到无法忍受
    towser
        2
    towser  
       2025 年 7 月 16 日
    理论上来说 WPF 的渲染性能肯定大幅度超过 Electron 才对,我几年前测试过百万级图表都不会卡的 ( GPU 渲染)。
    cmos
        3
    cmos  
       2025 年 7 月 16 日
    1. Path 多导致卡顿:用 DrawingVisual 、虚拟化或图层渲染
    2. 升级 .NET 没效果:WPF 自身架构瓶颈在渲染管线,和 .NET 没什么关系
    3. Bitmap 事件多:用 hit-test 而不是控件绑定

    总而言之,用 Electron 不可耻,接触 .NET 头疼也不可耻,可耻的是拉 WPF 过来拉踩。
    frayesshi1
        4
    frayesshi1  
    PRO
       2025 年 7 月 16 日
    Qt 在信创,深度学习领域比较多,.net 在工控领域比较多,electron 貌似开源的比较多,唯独 WPF (有可能孤陋寡闻)看到应用场景很少
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2019 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 11:59 PVG 19:59 LAX 03:59 JFK 06:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86