重塑WPF辉煌?基于DirectX 12的现代.NET UI框架Jalium

你是否曾经幻想过,如果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命名元素
  • 数据绑定表达式
  • 事件绑定
  • 资源字典和样式系统

编译流程则提供了两种路径:

  1. 编译时处理:通过Source Generator在编译期解析.jalxaml文件,并生成InitializeComponent()方法,避免了运行时的反射开销。

  2. 运行时加载:通过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

相关推荐
祈安_3 天前
C语言内存函数
c语言·后端
norlan_jame5 天前
C-PHY与D-PHY差异
c语言·开发语言
czy87874755 天前
除了结构体之外,C语言中还有哪些其他方式可以模拟C++的面向对象编程特性
c语言
m0_531237175 天前
C语言-数组练习进阶
c语言·开发语言·算法
Z9fish5 天前
sse哈工大C语言编程练习23
c语言·数据结构·算法
代码无bug抓狂人5 天前
C语言之单词方阵——深搜(很好的深搜例题)
c语言·开发语言·算法·深度优先
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习
枫叶丹45 天前
【Qt开发】Qt界面优化(七)-> Qt样式表(QSS) 样式属性
c语言·开发语言·c++·qt
with-the-flow5 天前
从数学底层的底层原理来讲 random 的函数是怎么实现的
c语言·python·算法