你是否曾经幻想过,如果WPF诞生在今天,它的底层渲染会是什么样子?是依然依赖老旧的MilCore,还是拥抱DirectX 12的极致性能?今天要介绍的Jalium,正是这样一个将WPF的设计哲学与现代图形技术融合的实验性项目------它用DirectX 12重新实现了WPF的核心概念,带来了一个完全自研的、面向.NET 10的Windows桌面UI框架。
它是什么?
Jalium.UI 不是一个对WPF的简单封装或"皮肤美化",而是一个从零开始构建的完整UI系统。它包含了WPF开发者所熟悉的一切:依赖属性、可视化树、布局引擎、输入路由、动画系统、主题管理......但底层却换成了DirectX 12的GPU加速渲染管线。这意味着,你可以用WPF风格的代码,享受到现代图形API带来的流畅体验和视觉效果。
架构设计:八层模块,各司其职
Jalium采用分层架构,由八个核心模块组成,每个模块都承担着明确的职责:
-
Jalium.UI.Core:这是整个框架的基石。它实现了完整的依赖属性系统,支持属性值优先级(动画 > 本地值 > 绑定 >
默认值)。布局引擎则沿用了WPF经典的Measure-Arrange两阶段模型,并通过LayoutManager进行批量脏元素处理,确保布局性能。
DependencyObject、Visual、UIElement、FrameworkElement......这条继承链对WPF开发者来说再熟悉不过。
-
Jalium.UI.Controls:提供了87个以上的控件类,覆盖了桌面应用开发的主流需求。从基础的Button、TextBox、CheckBox,到复杂的DataGrid、TreeView、NavigationView,甚至还有特色控件如支持9种画笔类型的InkCanvas、ColorPicker、MediaElement。布局容器方面,Grid、StackPanel、DockPanel、WrapPanel、Canvas、UniformGrid一应俱全,还提供了VirtualizingStackPanel用于大数据列表的虚拟化渲染。
-
Jalium.UI.Interop与原生层(C++):这两部分共同构成了渲染管线的底层。通过P/Invoke调用C++编写的DirectX
12后端,实现真正的GPU加速2D渲染。文本渲染集成了DirectWrite,并支持字形缓存。值得一提的是,架构上预留了多后端扩展能力,枚举中已定义D3D11、Vulkan、OpenGL、Metal和Software等选项,为未来跨平台或回退方案埋下伏笔。
标记语言:JALXAML,熟悉的配方
如果你熟悉XAML,那么Jalium的标记语言JALXAML会让你感到亲切。它几乎复刻了XAML的语法结构,支持:
- x:Class代码隐藏
- x:Name命名元素
- 数据绑定表达式
- 事件绑定
- 资源字典和样式系统
编译流程则提供了两种路径:
-
编译时处理:通过Source Generator在编译期解析.jalxaml文件,并生成InitializeComponent()方法,避免了运行时的反射开销。
-
运行时加载:通过XamlReader.LoadComponent()动态解析XAML,适用于动态界面场景。
此外,你还可以将JALXAML预编译为二进制包(.juib),在需要极致性能的场景下跳过XML解析,直接加载渲染。
视觉效果:GPU加持的现代UI
视觉效果是Jalium的一大亮点。由于底层基于DirectX 12,它可以轻松实现各种现代特效:
- 窗口背景效果:原生支持Windows 11的Mica、Acrylic、MicaAlt,通过DWM合成实现,让应用与系统融为一体。
- 元素级效果:支持DropShadow投影、高斯模糊,甚至允许你编写自定义的HLSL像素着色器,实现无限可能的视觉效果。
- 画刷系统:提供SolidColorBrush、LinearGradientBrush、RadialGradientBrush和ImageBrush,满足各种填充需求。
- 动画系统:支持DoubleAnimation数值插值、关键帧动画、路径动画以及多种缓动函数,通过Storyboard进行编排,让界面生动起来。
主题与样式:灵活定制,无缝切换
Jalium拥有完整的样式系统,包括Style、ControlTemplate、PropertyTrigger、EventTrigger和MultiTrigger。内置主题通过JALXAML文件定义,覆盖了所有控件的默认外观。最贴心的是,它支持浅色和深色主题的切换,并且颜色系统与Windows系统主题深度集成,可以随系统主题自动变化。
总结:一次认真的现代重写
Jalium.UI 不是一个小打小闹的玩具项目,而是一次认真的尝试:用现代技术栈重新实现WPF的设计理念。它保留了WPF开发者熟悉的编程模型,同时用DirectX 12替换了老旧的MilCore渲染层,用Source Generator替代了运行时反射,用.NET 10的最新特性提升了开发体验。
87个以上的控件、完整的动画和效果系统、灵活的标记语言......这些足以证明其野心。虽然目前还是一个年轻的项目,但它已经展现出了巨大的潜力。对于那些渴望在.NET桌面应用中实现现代视觉效果,又不想放弃WPF开发效率的开发者来说,Jalium无疑是一个值得关注的方向。
未来,它会成为WPF的继任者吗?我们拭目以待。
今天是 Jalium.UI 的重要里程碑!Jalium.UI 已于 2026/3/1 开源发布!
现在就来一起见证并参与这段旅程:
开源地址:https://github.com/VeryJokerJal/Jalium.UI
QQ 交流群:1079778999