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

17 天前
 wuoty

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

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

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

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

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

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

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

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

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

总而言之,用 Electron 不可耻,接触 .NET 头疼也不可耻,可耻的是拉 WPF 过来拉踩。
frayesshi1
17 天前
Qt 在信创,深度学习领域比较多,.net 在工控领域比较多,electron 貌似开源的比较多,唯独 WPF (有可能孤陋寡闻)看到应用场景很少

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1145558

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX