动画性能比对:WPF / WinUI3 / WebView2

丝滑流畅的高性能动画,对于做一个具有高级感体验的应用来说至关重要。

我最开始是想比对WPF在.Net Framework 462 和 .Net8.0之间进行比对,我原本希望WPF在.Net8.0 UI表现上有肉眼可见的进步,但是比对下来之后,在高压力的UI动画方面基本上没变化,因此暂时不讨论WPF在8.0上面的表现,跳过。我们暂时认为WPF在任何框架上的表现都是类似的;

另外,在嵌入webview2浏览器时,是嵌入到.Net Framework462 还是嵌入到 WinUI3 我也分别进行了比对,但是它们的表现也基本上是看不出来差异,所以这里我们就只区分 WPF / WinUI3 / WebView2 这三种框架。

测试主机的参数如下:

处理器 Intel(R) Core(TM) i9-14900HX 2.20 GHz

机带 RAM 32.0 GB (31.7 GB 可用)

系统类型 64 位操作系统, 基于 x64 的处理器

版本 Windows 11 家庭中文版

版本号 24H2

操作系统版本 26100.3775


基础动画 - 单次

对200张图片进行旋转动画:

WPF: 卡顿的快要动弹不了了,惨不忍睹,体验极差:

WebView2: 丝滑流畅,用平和的减速表现柔和,但是实际帧率一般:

WinUI3: 绝对的硬实力,快得都要看见残影了:


基础动画 - 多次

连续中断地触发多次动画:

WebView2:

WinUI3:

WebView2 和 WinUI3都表现流畅,但是中间有个小插曲,WebView2在二次、三次触发的时候没有清空之前旧的元素,会导致相当卡顿;但是WinUI3完全不受影响。整体来说WinUI3仍然表现更优。


粒子动画 - 3000粒子

WPF:勉强能跑动的感觉,基本带不起来粒子动画:

WebView2: 轻松胜任,丝滑流畅,甚至极其流畅:

WinUI3:流畅,但是貌似不如WebView2更丝滑,差强人意:


粒子动画 - 30000粒子

WPF:完全跑不动了:

WebView2: 像是结冰的感觉,缓慢,很吃力:

WinUI3:仍然极其流畅,与3000粒子的效果相比,由于粒子数量更多,反而看到速度有更快的错觉,性能完全没有受到影响(但是总感觉它的形态缺少一点柔和美,太直接了):


结论

如果 "体验感" 作为第一考量维度,那么 WinUI3是首选,WebView2基本可以胜任,WPF几乎不可胜任。

相关推荐
爱吃烤鸡翅的酸菜鱼21 小时前
Java 事件发布-订阅机制全解析:从原生实现到主流中间件
java·中间件·wpf·事件·发布订阅
武藤一雄2 天前
WPF中ViewModel之间的5种通讯方式
开发语言·前端·microsoft·c#·wpf
2501_915921432 天前
uni-app一键生成iOS安装包并上传TestFlight全流程
android·ios·小程序·https·uni-app·iphone·webview
CSharp精选营2 天前
都是微软亲儿子,WPF凭啥干不掉WinForm?这3个场景说明白了
c#·wpf·跨平台·winform
baivfhpwxf20232 天前
wpf TextBlock 控件如何根据内容换行?
wpf
亘元有量-流量变现2 天前
鸿蒙、安卓、苹果音频设备技术深度解析与开发实践
android·wpf·harmonyos·亘元有量·积分墙
软泡芙2 天前
【Bug】ReactiveUI WPF绑定中依赖属性不更新的问题分析与解决方案
java·bug·wpf
浪扼飞舟2 天前
WPF输入验证(ValidationRule)
java·javascript·wpf
IOFsmLtzR4 天前
Flink Agents 源码解读 --- (5) --- ActionExecutionOperator
microsoft·flink·wpf
廋到被风吹走5 天前
【AI】Codex 复杂任务拆解:从“一气呵成“到“步步为营“
人工智能·wpf