LCUI
LCUI 是一個用 C 編寫的圖形界面開發庫,你可以用 C、XML 和 CSS 創建簡單的桌面應用,包括傳統的 Win32 桌面應用、Windows 通用應用,目前主要支持 Windows 系統,後續版本將會完善對 Linux 系統的支持。
如果你在熟悉 C 語言的基礎上還具備網頁開發經驗,那麼在使用 LCUI 時會更容易上手,因為 LCUI 對 XML、CSS 以及元素佈局等的處理方式和瀏覽器有一些相似的地方,你可以參考左側的示例代碼瞭解大致效果。
主要特性
- C 語言編寫: 適用於體積較小且主要使用 C 語言實現的應用程序,以及偏向使用 C 語言編寫簡單應用的開發者。
- 跨平臺: 支持 Windows 和 GNU/Linux 系統,可開發簡單的 Windows 桌面應用和通用應用,以及 Linux 桌面應用。
- XML 和 CSS 解析: 使用 XML 和 CSS 來描述界面的結構和樣式,易於開發和維護。
- 可縮放: 支持全局縮放,支持使用基於屏幕密度的 sp 和 dp 單位表示界面元素的位置和大小。
- 圖片處理: 支持讀取 jpg、png 和 bmp 格式的圖片。
- 觸控: 支持多點觸控,但目前只支持 Windows 系統。
缺少的特性
LCUI 的主要用途是方便作者開發簡單的圖形界面應用,簡單也就意味著功能很少,比如:
- 沒有硬件加速,圖形渲染效率低下。
- 不支持剪切板,你不能選中和複製界面中的文本,也不能從其它程序複製文本到 LCUI 程序中。
- 輸入法支持差,在 Linux 中僅支持輸入英文字母和符號。
- 佈局系統簡單,不支持網格、表格等佈局。
如今可參考的同類開源項目有很多,例如:SDL、imgui,LCUI 中大部分缺少的特性都能在這些項目中找到相關實現,新功能的開發成本和複雜度也因此而降低了很多。開源此項目的原因之一是進行技術交流,如果你有同類項目的研究和使用經驗,可以考慮向此項目提供改進方案。
快速上手
Windows
使用 lcui-cli 快速創建一個 LCUI 項目:
# 安裝 lcui-cli
npm install -g @lcui/cli
# 創建一個名為 myapp 的 LCUI 項目
lcui create myapp
# 進入項目目錄
cd myapp
# 運行這個項目
npm run start
或者,你可以從已有的示例項目快速開始:
# 克隆示例代碼庫
git clone github.com/lc-ui/lcui-quick-start
# 進入代碼庫
cd lcui-quick-start
# 安裝 NodeJS 依賴包
npm install
# 安裝適用於 x64 CPU 架構的 C/C++ 依賴庫
lcpkg install --arch x64
# 以調試模式運行應用程序
lcpkg run start --mode debug
想從零開始編寫一個 LCUI 應用程序?你可以在你的項目目錄裡使用 lcpkg 來快速安裝 LCUI:
# 初始化 lcpkg 配置文件,告訴 lcpkg 你的項目相關信息
lcpkg init
# 從 GitHub 下載安裝已編譯好的 LCUI 庫
lcpkg install github.com/lc-soft/LCUI
安裝成功後,按照 lcpkg 輸出的幫助文檔來配置你項目的編譯參數。
如果你想手動從源碼編譯 LCUI,請在 LCUI 的源碼目錄中使用 lcpkg 安裝依賴庫:
lcpkg install
之後,使用 Visual Studio 打開 build/windows/LCUI.sln 文件,然後編譯生成 LCUI。
Ubuntu
# 安裝依賴庫
sudo apt-get install libpng-dev libjpeg-dev libxml2-dev libfreetype6-dev libx11-dev
# 克隆代碼庫
git clone github.com/lc-soft/LCUI.git
# 進入源碼目錄
cd LCUI
# 生成配置腳本
./autogen.sh
# 配置環境及構建工具
./configure
# 構建
make
# 如果需要安裝的話
sudo make install
# 進入測試程序目錄
cd test
# 運行 helloworld 程序
./helloworld
提示: 如果需要自定義編譯器、編譯參數、安裝位置等配置,請查閱 INSTALL 文件。
適合哪些人使用?
適合有 GUI 應用開發經驗、熟悉 Web 前端開發技術、有意向參與開源項目的 C 開發者使用,最好是具備兩年 C 開發經驗和一年 web 前端開發經驗。以時間來衡量上手門檻可能有點模糊,以下按照技術方向分別列出了一些主要條件,你可自行判斷自己是否能夠快速上手。
C:
- 熟悉 C 語言及編譯相關工具鏈的配置,能解決編譯問題
- 熟悉至少一種圖形庫和 GUI 庫/框架,瞭解 GUI 應用程序的工作原理
- 熟悉多線程編程,能夠解決線程安全、線程同步等問題
- 能熟練使用調試工具定位問題
- 有較多的開源項目源碼閱讀經驗
Web 前端:
- 熟練掌握常見佈局
- 熟悉 CSS 盒子模型和常用屬性
- 有良好的 CSS 編碼風格
更多使用方法可以查看官方文檔
開源地址:
https://gitee.com/lc-soft/LCUI
更多更優質的資訊,請關注我,你的支持會鼓勵我不斷分享更多更好的優質文章。
閱讀更多 星集 的文章