项目简介
duilib 是一款 Windows 平台下的免费开源 DirectUI 界面库,所有控件均为自绘实现,不依赖原生 HWND 句柄。自 2013 年发布以来,duilib 已成为国内 Windows 桌面 UI 框架的标杆项目,被大量互联网公司的 PC 客户端产品所采用。
与传统的 Windows UI 开发方式(如 MFC、Win32 API)不同,DirectUI 将整个窗口作为一个绘制表面,由框架统一管理和渲染所有子控件,从而实现更灵活的界面定制、更平滑的动画效果和更好的性能表现。
GitHub 数据
| 指标 | 数据 |
|---|
| Stars | 5,937 |
| Forks | 1,984 |
| License | MIT |
| Language | C++ |
| 创建时间 | 2013-12-27 |
| 最后更新 | 2026-03-04(活跃维护中) |
核心功能
- DirectUI 渲染引擎:纯自绘渲染管线,所有控件无 HWND 句柄,减少系统资源占用
- 丰富的内置控件:Button、Edit、List、Tree、Combo、RichEdit、Slider、Progress、Tab 等数十种标准控件
- XML + C++ 双模布局:支持通过 XML 声明式布局界面,也支持纯 C++ 代码动态构建
- 虚拟列表与大数据优化:针对万级数据量的列表控件做虚拟化渲染优化
- 皮肤与主题系统:支持运行时切换皮肤/主题,全局样式统一管理
- 动画引擎:内置补间动画支持,轻松实现过渡、淡入淡出、滑动等效果
- 多语言国际化:完善的字符串资源管理和语言切换机制
- DuiDesigner 可视化设计器:所见即所得的界面设计工具,拖拽布局、实时预览
技术栈
| 技术 | 说明 |
|---|
| 语言 | C++11/14 |
| 构建系统 | CMake |
| 默认渲染 | GDI / GDI+ |
| 可选渲染 | Skia(跨平台 2D 图形库) |
| 包管理 | vcpkg 可安装 |
| 依赖 | 极轻量,无重型第三方依赖 |
使用方式
- 通过 vcpkg 安装:
vcpkg install duilib - 或直接从 GitHub 克隆源码,集成到 CMake 项目中
- 使用 DuiDesigner 可视化设计器进行界面布局
- 通过 XML 定义 UI 结构,C++ 绑定事件与逻辑
典型用户
- 腾讯:TIMSDK 桌面端使用 duilib 构建界面
- 网易:NIM(网易云信)PC SDK 采用 duilib
- 众多国内互联网公司的 PC 客户端产品
适用场景
- Windows PC 桌面客户端开发
- 即时通讯(IM)软件
- 视频会议 / 直播客户端
- 股票交易 / 金融终端
- 安全工具(杀毒、防火墙)
- 企业内部管理工具
- 对安装包体积敏感的场景
竞品对比
| 特性 | duilib | Qt | wxWidgets | Electron | MFC |
|---|
| 跨平台 | ❌ 仅 Windows | ✅ Windows/macOS/Linux | ✅ 多平台 | ✅ 全平台 | ❌ 仅 Windows |
| 安装包体积 | ~500KB 极小 | 数十 MB | 数 MB | 100MB+(含 Chromium) | 数 MB |
| 渲染方式 | DirectUI 自绘 | QPainter / 原生 | 原生控件 | HTML/CSS/JS | 原生控件 |
| 学习曲线 | 低(中文文档丰富) | 中高 | 中 | 低(Web 技术) | 中 |
| 控件丰富度 | ★★★★☆ | ★★★★★ | ★★★★☆ | ★★★★☆(Web 生态) | ★★★☆☆ |
| 开发语言 | C++ | C++/QML/Python | C++/Python | JS/TS/HTML | C++ |
| 中文生态 | ★★★★★ 极好 | ★★☆☆☆ | ★☆☆☆☆ | ★★★☆☆ | ★★★★☆ |
| 维护状态 | 活跃 | 活跃 | 缓慢 | 活跃 | 微软停止支持 |
| 典型领域 | 国内 PC 客户端 | 跨平台桌面应用 | 跨平台原生应用 | 跨平台 Web 套壳 | 遗留系统维护 |
duilib 的核心优势
- 极小包体:核心库仅约 500KB,适合对安装包大小有严格要求的场景
- 极高渲染性能:DirectUI 架构减少窗口句柄开销,万级控件场景表现优异
- 完善的中文文档生态:国内社区积累了大量教程、博客和示例项目
- 成熟的企业级验证:经过腾讯、网易等头部互联网公司海量用户检验
参考资料
- GitHub 仓库:https://github.com/duilib/duilib
- 官方文档:https://github.com/duilib/duilib/wiki
- vcpkg 安装指南:https://vcpkg.io/en/port/duilib