本地下载文件大小:4.8 MB
LCUI是基于C语言的一款图形界面开发库,主要用于Windows和Linux桌面应用的开发,可使用XML标记语言来描述界面的结构,CSS代码描述原色的位置、大小、背景、字体和边框等样式,支持加载多个字体文件和读取多种类型的图片,软件开放源代码可进行二次开发。
C 语言编写: 适用于体积较小且主要使用 C 语言实现的应用程序,以及偏向使用 C 语言编写简单应用的开发者。
跨平台: 支持 Windows 和 GNU/Linux 系统,可开发简单的 Windows 桌面应用和通用应用,以及 Linux 桌面应用。
XML 解析: 支持使用 XML 标记语言描述界面的结构,更少的代码量,更直观的表达方式,易于开发和维护。
CSS 解析: 支持使用 CSS 代码描述界面元素的位置、大小、背景、字体、边框等样式,与应用程序的逻辑分离,易于使用和修改。
类 HTML 布局: 与浏览器处理的网页布局类似,但目前只支持块级(block)、内联块级(inline-block)和简单的弹性(flex)布局,如果你有网页开发经验的话会比较容易上手。
界面缩放: 支持通过设置全局缩放比例来让界面适应不同像素密度的屏幕,也支持使用基于屏幕密度的 sp 和 dp 单位表示界面元素的位置和大小。
文本绘制: 支持为文本设置全局字体、行高、水平对齐方式,支持对局部文本块单独设置颜色、背景色、加粗、斜体。
字体管理: 支持加载多个字体文件,支持自定义界面中的标题、正文、引用、强调等类型的文本所使用的字体字族和风格。
图片处理: 提供图片读取接口,支持读取 jpg、png 和 bmp 格式的图片。支持逐行读取,可在读取图片的过程反馈读取进度。
触控: 支持多点触控,但目前只支持 Windows 系统。
Windows
创建新的 LCUI 应用项目
使用 lcui-cli 快速创建一个 LCUI 应用项目:
# 安装 lcui-cli
npm install -g @lcui/cli
# 创建一个名为 myapp 的 LCUI 项目
lcui create myapp
# 进入项目目录
cd myapp
# 安装依赖库
lcpkg install
# 启动这个项目
lcpkg run start
为已有的项目安装 LCUI
在你的项目目录里使用 lcpkg 来快速安装 LCUI:
# 初始化 lcpkg 配置文件,告诉 lcpkg 你的项目相关信息
lcpkg init
# 从 GitHub 下载安装已编译好的 LCUI 库
lcpkg install github.com/lc-soft/LCUI
手动编译安装
如果你想手动从源码编译 LCUI:
打开命令行窗口,在 LCUI 的源码目录中使用以下命令安装依赖库:
lcpkg install
# 如果你需要编译 x64 版本的话
lcpkg install --arch x64
# 如果你需要编译适用于 Windows 通用应用平台 (UWP) 版本的话
lcpkg install --platform uwp
lcpkg install --arch x64 --platform uwp
重命名 include 目录中的 config.win32.h.in 文件为 config.h。
使用 Visual Studio 打开 build/windows/LCUI.sln 文件,然后编译生成 LCUI。
Ubuntu
# 安装依赖库
sudo apt-get install libpng-dev libjpeg-dev libxml2-dev libfreetype6-dev libx11-dev
# 克隆代码库
git clone https://github.com/lc-soft/LCUI.git
# 进入源码目录
cd LCUI
# 生成配置脚本
./autogen.sh
# 配置环境及构建工具
./configure
# 构建
make
# 如果需要安装的话
sudo make install
# 进入测试程序目录
cd test
# 运行 helloworld 程序
./helloworld
渲染一段文字绘制一个文字比较容易,但用绘制一个文字的方法去绘制一段文字的话,实现起来会很复杂,针对这个问题,可以用 LCUI 提供的文本图层(TextLayer)来解决,除了基本的文本绘制功能外,还具备一下功能:
自定义全局文字的对齐方式
用标签设定其中一段文字的颜色和大小
文本的插入、删除功能,以及光标定位
LCUI 的文本显示(TextView)部件和文本编辑框(TextEdit)部件就是基于该模块实现的。
以下是简单的示例程序:
#include <LCUI_Build.h>
#include <LCUI/LCUI.h>
#include <LCUI/graph.h>
#include <LCUI/font.h>
int main( void )
{
int ret;
LCUI_Graph img;
LCUI_Pos pos = {0, 80};
LCUI_Rect area = {0, 0, 320, 240};
LCUI_TextLayer txt = TextLayer_New();
LCUI_TextStyle txtstyle;
/* 初始化字体处理功能 */
LCUI_InitFont();
/* 创建一个图像,并使用灰色填充 */
Graph_Init( &img );
Graph_Create( &img, 320, 240 );
Graph_FillRect( &img, RGB( 240, 240, 240 ), NULL, FALSE );
/* 设置文本的字体大小 */
TextStyle_Init( &txtstyle );
txtstyle.pixel_size = 24;
txtstyle.has_pixel_size = TRUE;
/* 设置文本图层的固定尺寸、文本样式、文本内容、对齐方式 */
TextLayer_SetFixedSize( txt, 320, 240 );
TextLayer_SetTextStyle( txt, &txtstyle );
TextLayer_SetTextAlign( txt, SV_CENTER );
TextLayer_SetTextW( txt, L"这是一段测试文本\nHello, World!", NULL );
TextLayer_Update( txt, NULL );
/* 将文本图层绘制到图像中,然后将图像写入至 png 文件中 */
TextLayer_DrawToGraph( txt, area, pos, &img );
ret = Graph_WritePNG( "test_string_render.png", &img );
Graph_Free( &img );
/* 退出字体处理功能 */
LCUI_ExitFont();
return ret;
}
编译运行后,可以在程序所在工作目录下找到 test_string_render.png 文件,打开它可看到如下图所示的内容:
绘制出来的文字
在为 TextLayer 设置文本、修改文字样式后,需要调用 TextLayer_Update() 函数以应用这些更改,该函数的第二个参数是个链表,用于保存文本图层中需要刷新的区域,如果不需要这些数据可以将该参数设置为 NULL。
TextLayer 提供了 TextLayer_DrawToGraph() 函数用于将文本图层绘制到图像中,第二个参数指定 TextLayer 中需要绘制的区域,第三个参数指定绘制出的内容在图像中的位置。
问题修复
wasm-ld: error: duplicate symbol: self (2b0424c)
display: rect_array 未被释放 (224c433)
gui: 部件销毁后未标记无效区域 (8e1f136)
gui: TextView_SetTextW() 段错误 (#195) (a10df88)
ime: 设置输入框文本光标时段错误 (0b644e1)
linux: 在窗口处于最小尺寸时渲染会出现段错误 (#200) (#201) (fa23f89)
mainloop: 将事件触发器从 OpenMP 并行循环中移出以解决主线程阻塞问题 (#204) (#205) (6978f46)
新功能
添加 settings 接口 (#191) (#211) (#212) (1b8c6e6)
系统安全/ 22.6 MB
音频转换/ 9.5 MB
编程软件/ 9.7 MB
网络辅助/ 34.5 MB
商业贸易/ 18.4 MB
软件评论
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,与本站立场无关!