LVGL开发教程-Label文本

系列文章目录

知不足而奋进 望远山而前行


目录

系列文章目录

文章目录

前言

​编辑

1. 文本显示

2. 使用字体

总结


前言

在嵌入式系统开发中,文本显示是一项基本而重要的功能。使用 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个步骤,我们可以快速创建自己的字体库

  1. 准备好字体库 .ttf 或者.woff格式的字体(这个可以从网上找到)
  2. 打开网站Font Converter — LVGL

  1. 将生成的字库c文件拷贝到工程中
  2. 在要用到的地方调用 LV_FONT_DECLARE(alimama30);
  3. 在代码中写上
lv_style_set_text_font(&style1, &alimama30);

总结

本文详细讲解了如何利用 LVGL 库在嵌入式设备上实现文本标签的创建和定制化显示。首先,我们学习了如何创建 Label 对象并设置其基本属性,如文本内容、大小和位置。接着,通过样式定义,我们展示了如何修改文本的字体和颜色,以及如何使用 LVGL 提供的自定义字体。最后,我们介绍了如何实现长文本滚动显示,通过设置 LV_LABEL_LONG_SCROLL_CIRCULAR 模式来达到类似广告牌效果。

通过这些步骤,开发者可以在嵌入式系统中高效地实现各种文本显示需求,为用户提供更加丰富和可定制的用户界面体验。