系列文章目录
知不足而奋进 望远山而前行
目录
前言
在嵌入式系统开发中,文本显示是一项基本而重要的功能。使用 LittlevGL(LVGL)库,我们可以轻松地创建并控制文本标签(Label),实现各种效果,如文本滚动、自定义字体等。本文将介绍如何利用 LVGL 实现文本标签的创建、文本设置、样式定义以及特殊效果如长文本滚动。
1. 文本显示
标签是用来显示文本的基本对象类型。
创建Label对象:
lv_obj_t * lv_label_create(lv_obj_t * parent)
参数可以指定lv_scr_act()
会自动显示在图层上
设置文本内容:
void lv_label_set_text(lv_obj_t * obj, const char * text)
设置Label的宽度高度及位置:
//设置的方式通objects的设置
代码实现:
void first_screen(){
lv_obj_t* label = lv_label_create(lv_scr_act());
lv_obj_set_size(label,100,80);
lv_obj_set_align(label,LV_ALIGN_CENTER);
lv_label_set_text(label,"Hello itheima");
}
设置长文本滚动显示, 当文本太长之后, 就可以滚动显示文字,就像广告牌上面那样.
LV_FONT_DECLARE(alimama30);
static lv_style_t style1;
lv_style_init(&style1);
lv_style_set_text_font(&style1, &alimama30);
lv_style_set_text_color(&style1, lv_palette_main(LV_PALETTE_BLUE_GREY));
lv_obj_t* label = lv_label_create(root);
lv_obj_add_style(label,&style1,0);
lv_obj_set_pos(label,0,10);
lv_label_set_text(label,"抒写秋季爱意");
lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR);
lv_obj_set_width(label,230);
注意:若中文字体配置没有问题,始终无法显示出中文,请检查当前.c文件编码格式是否为UTF-8
注意:若中文字体配置没有问题,始终无法显示出中文,请检查当前.c文件编码格式是否为UTF-8
注意:若中文字体配置没有问题,始终无法显示出中文,请检查当前.c文件编码格式是否为UTF-8
2. 使用字体
在lvgl中, 自带有一些大小的字体, 这些字体只支持英文,不支持中文. 打开lv_conf.h 可以看到字体相关的配置
#define LV_FONT_MONTSERRAT_8 1
#define LV_FONT_MONTSERRAT_10 1
#define LV_FONT_MONTSERRAT_12 1
#define LV_FONT_MONTSERRAT_14 1
#define LV_FONT_MONTSERRAT_16 1
#define LV_FONT_MONTSERRAT_18 1
#define LV_FONT_MONTSERRAT_20 1
#define LV_FONT_MONTSERRAT_22 1
#define LV_FONT_MONTSERRAT_24 1
#define LV_FONT_MONTSERRAT_26 1
#define LV_FONT_MONTSERRAT_28 1
#define LV_FONT_MONTSERRAT_30 1
#define LV_FONT_MONTSERRAT_32 1
#define LV_FONT_MONTSERRAT_34 1
#define LV_FONT_MONTSERRAT_36 1
#define LV_FONT_MONTSERRAT_38 1
#define LV_FONT_MONTSERRAT_40 1
#define LV_FONT_MONTSERRAT_42 1
#define LV_FONT_MONTSERRAT_44 1
#define LV_FONT_MONTSERRAT_46 1
#define LV_FONT_MONTSERRAT_48 1
如果我们想用这些字体的话,只需要在样式中指定这些宏定义的小写格式就可以了.
lv_style_set_text_font(&style1,&lv_font_montserrat_48);
由于lvgl自带的库不支持中文, 若想显示中文,我们就需要创建自己的字体库. 按照如下3个步骤,我们可以快速创建自己的字体库
- 准备好字体库
.ttf
或者.woff
格式的字体(这个可以从网上找到) - 打开网站Font Converter — LVGL
- 将生成的字库c文件拷贝到工程中
- 在要用到的地方调用
LV_FONT_DECLARE(alimama30);
- 在代码中写上
lv_style_set_text_font(&style1, &alimama30);
总结
本文详细讲解了如何利用 LVGL 库在嵌入式设备上实现文本标签的创建和定制化显示。首先,我们学习了如何创建 Label 对象并设置其基本属性,如文本内容、大小和位置。接着,通过样式定义,我们展示了如何修改文本的字体和颜色,以及如何使用 LVGL 提供的自定义字体。最后,我们介绍了如何实现长文本滚动显示,通过设置 LV_LABEL_LONG_SCROLL_CIRCULAR
模式来达到类似广告牌效果。
通过这些步骤,开发者可以在嵌入式系统中高效地实现各种文本显示需求,为用户提供更加丰富和可定制的用户界面体验。