6 年磨一剑!纯 C# 全自研轻量 UI 引擎|内核 < 200KB + .NET8 AOT 跨平台 + 百万数据 60fps
当前 PC 客户端开发,大多基于以下技术体系:
- .NET 官方框架:WinForms / WPF / WinUI / .NET MAUI
- 开源跨平台方案:Avalonia
- Web 套壳技术:Electron / Tauri
- C++ 原生框架:Qt
绝大多数开发者与企业,都选择在这些成熟框架之上做二次封装、组件扩展,以此快速实现业务需求。但真正愿意从源头开始,全链路自研一套 UI 引擎的开发者少之又少。
本引擎正是从 0 到 1 完全自研:渲染管线、视图布局系统、动画调度、虚拟滚动、事件分发、主题体系、状态管理,全部自主实现,形成全链路闭环。可满足 90% 以上的桌面客户端 UI 需求,复杂绘图可直接对接底层 Skia 渲染,生成绘制指令并提交 GPU 执行。
引擎演进与核心思想
引擎的演进之路:从 WinForms + GDI 起步 → 多次架构重构 → 最终定型 GLFW + SkiaSharp。深度融合业界三大核心思想:
- Android View 绘制流程
- Jetpack Compose 函数式组合编程
- Flutter 渲染优化理念
框架设计追求极简与高效:
- 单线程架构 + 对象复用机制,大幅降低 GC 压力
- 元素结构无冗余设计,内存占用极低
- 函数式组合编程 + 状态驱动界面重组
- 组件树一次声明、多处复用
- 业务逻辑与 UI 结构高度内聚,不分散
- 思想贴近 React / Flutter / Jetpack Compose,现代前端/移动端开发者可快速上手
与传统 XML、重量级框架不同,本引擎坚持小而精的设计理念:只提供最基础的原子组件,所有复杂组件(DataGrid、TreeView、图表、卡片等)均通过基础组件积木式组合实现。框架不提供冗余、不内置臃肿组件,保持最轻量、最灵活、最可定制的核心优势。
全程无黑盒、无深度封装、无 Web 套壳、无浏览器内核,回归原生渲染本质。
引擎核心亮点
- 纯 C# 用户态实现,Release 核心 DLL < 200KB
- 函数组合式 API + 状态对象驱动界面重组
- 自研无 Timer 高性能动画系统
- 完整 View 布局系统:Row/Column/Flow/ 虚拟滚动容器
- 百万级数据列表轻松稳定 60fps+
- 自研渲染管线 + 脏矩形局部刷新
- 底层对象池复用:SKPaint/SKFont/SKBitmap 全复用
- 窗口对接 Silk.NET.GLFW,渲染基于 SkiaSharp
- 支持 .NET8 AOT 原生发布
- 已验证:Windows / Ubuntu,macOS 理论 100% 支持
- 插拔式架构,可快速对接其他平台与渲染器
基础组件 & 扩展能力
内置基础组件:Text/Input/Icon/Row/Column/Flow/LazyRow/LazyColumn/LazyGrid/PopupCard
复杂组件如 DataGrid、TreeView、图表等,均可通过基础组件积木式组合实现,无需重写底层。
已实现 Demo
- 百万数据高性能虚拟滚动列表
- 仿微信 PC 端主界面
- 饼图 / 柱状图 / 折线图 / 仪表盘
[图片:演示效果] [图片:演示效果] [图片:演示效果] [图片:演示效果]
极简示例代码
ContentView(() => { // 垂直布局
Column(() => {
// 响应式状态
var counterNum = StateValueOf(0);
Text()
.H3()
.Binding(counterNum, (builder, num) => {
builder.TextValue();
}, );
visibleState = StateValueOf();
animateValue = AnimateFloatOf(visibleState, animate => {
animate.Duration = ;
animate.Times = .MaxValue;
animate.Delay = ;
animate.Interpolator = XAnimationInterpolator.Uniform;
});
Icon(SvgResources.CircleProgress)
.Size()
.Binding(animateValue, (builder, ) => builder.Rotate( * ));
Text()
.PrimaryButton()
.Click(() => counterNum.Value++);
})
.Size(WRAP)
.Space();
});


