<p align="center">
<a href="http://lcui.org/">
<img src="https://lcui.lc-soft.io/static/images/lcui-logo-lg.png" alt="" width=72 height=72>
</a>
<h3 align="center">LCUI</h3>
<p align="center">
用于构建用户界面的C语言库
</p>
<p align="center">
<a href="https://github.com/lc-soft/LCUI/actions"><img alt="GitHub Actions" src="https://yellow-cdn.veclightyear.com/0a4dffa0/63272c5b-fa89-4cd0-8e94-82b71b5c2742.svg"></a>
<a href="https://codecov.io/gh/lc-soft/LCUI"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/d7e46586-6dee-49cd-bf90-b2a72e72fd16.svg" /></a>
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/0b98789e-80ab-4059-a359-3e1a814968df.svg" alt="仓库大小">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/c43ceda1-8b43-47bd-9971-5276d660c80d.svg" alt="代码大小">
</p>
</p>
目录
<!-- TOC -->
<!-- /TOC -->
简介
中文版说明文档
LCUI 是一个用 C 语言编写的用于构建图形用户界面的库。它的目标是探索和实践开发用户界面的新方式,特点是体积小、易于使用,并提供便捷的开发工具,帮助开发者快速创建带有图形用户界面的桌面应用程序。
LC 源自作者名字的首字母。该库最初是为了帮助作者开发小项目和获取开发经验而设计的。然而,作者在充满 C/C++ 专家的就业市场中并未获得竞争优势,因此不得不从事 Web 前端开发工作。因此,LCUI 现在倾向于整合来自 Web 前端领域的技术。
主要特性
- 跨平台: 支持 Windows 和 Linux。
- 完全自绘组件: 组件在多个平台上保持一致的外观和行为。
- 内置 CSS 引擎: 支持使用 CSS 定义用户界面的样式和布局,使具有 Web 开发经验的人更容易上手。
- 提 供现代开发工具: 这些工具允许你使用 TypeScript 语言配合 JSX 语法、React 库以及其他 Web 前端技术来编写用户界面。
功能概览
你可以从以下截图了解 LCUI 应用程序的开发体验:

- React 风格的组件开发: 使用 TypeScript 编写 UI 配置文件。结合 TypeScript、JSX 语法和 LCUI React 库的优势,你可以简洁地描述界面结构、资源依赖、组件状态、数据绑定和事件绑定。
- 多种样式表编写方式: Tailwind CSS、CSS Modules、Sass 和全局 CSS。
- 基于文件系统的路由: 以目录形式组织应用程序页面,每个页面对应一个目录。目录的路径作为该页面的路由。借助内置的应用程序路由器,你可以轻松实现页面切换和导航,无需手动配置路由。
- 用户友好且现代的图标库: 图标来源于 fluentui-system-icons 库,经过部分定制以适应 LCUI 的特性,提供类似的使用模式。
- 命令行开发工具: 运行
lcui build
命令可预处理应用程序目录内的配置文件,然后生成相应的 C 源代码和资源文件。
架构
随着时间的推移,LCUI 已经建立在各种库的基础之上:
快速开始
在开始之前,你需要在电脑上安装以下软件:
- Git: 版本控制工具,用于下载示例项目的源代码。
- XMake:构建工具,用于构建项目。
- Node.js:JavaScript运行时环境,用于运行LCUI命令行开发工具。
然后,在命令行窗口中运行以下命令:
# 安装LCUI命令行开发工具
npm install -g @lcui/cli
# 创建LCUI应用项目
lcui create my-lcui-app
之后按照命令提供的提示进行操作。
文档
教程
- 待办事项列表:学习LCUI的基本概念和用法,以及如何使用它构建界面并实现状态管理、界面更新和交互。
- 渲染布料动画:将现有布料模拟程序的JavaScript源代码改写成C语言,并使用cairo图形库进行布料渲染。然后应用LCUI来实现布料动画播放和交互。
- 浏览器:参考网页浏览器,使用LCUI实现类似的界面结构、布局、样式和多标签页管理功能。利用LCUI的路由管理功能实现多标签页的页面状态管理和导航,以及简单的文件浏览页面。(此教程已过时,欢迎贡献更新)
参考资料
LCUI和相关项目的一些功能受到其他开源项目的启发。你可以参考它们的文档来了解基本概念和用法。
路线图
以下是即将进行的项目:
- LCUI
- 改进API设计。
- 增强CSS引擎,支持
inherit
、!important
和转义字符。
- 添加SDL