【LVGL】标签部件
引言
标签部件(lv_lable)

一、创建标签部件

第二种设置文本的方式带来的问题:
- 指定的缓冲区内存被修改或释放,则这个文本中的数据是不可靠的。
- 假如缓冲区是只读的话,通过代码段将文本写到缓冲区中则程序容易崩溃。
示例程序
void my_gui(void)
{
// 创建标签部件
lv_obj_t *label = lv_label_create(lv_scr_act()); /* 创建一个标签部件 */
// 设置文本的三种方式
// 1、lv_label_set_text(label, "hallo"); /* 直接设置文本,存储文本的内存动态分配 */
// 2、lv_label_set_text_static(label, "hallo"); /* 文本不存储在动态内存区,而是在指定的缓存区中(慎用) */
// 3、lv_label_set_text_fmt(label, "hallo%d", 50); /* 格式化显示文本,类似printf方式使用 */
}
现象:(仅展示第三个)

二、改变文本样式

示例程序
void my_gui(void)
{
lv_obj_t *label = lv_label_create(lv_scr_act()); /* 创建一个标签部件 */
lv_label_set_text(label, "hallo"); /* 直接设置文本,存储文本的内存动态分配 */
lv_obj_set_style_bg_color( label, lv_color_hex(0xff0000), LV_STATE_DEFAULT ); /* 设置背景颜色 */
lv_obj_set_style_bg_opa( label, 100, LV_STATE_DEFAULT ); /* 设置背景透明度 */
// lv_conf.h文件中官方提供字体,需要哪一个字体要在宏中勾上
lv_obj_set_style_text_font( label, &lv_font_montserrat_48, LV_STATE_DEFAULT ); /* 设置字体大小(默认只能显示英文) */
lv_obj_set_style_text_color( label, lv_color_hex(0xf7b37b), LV_STATE_DEFAULT ); /* 设置文本颜色 */
// 单独着色
lv_label_set_recolor( label, true ); /* 开启重新着色功能 */
lv_label_set_text( label, "hallo #ff0000 lvgl# " ); /* 单独设置颜色 */
}
现象:

三、显示长文本

示例程序
void my_gui(void)
{
lv_obj_t *label = lv_label_create(lv_scr_act()); /* 创建一个标签部件 */
lv_label_set_text(label, "hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo"); /* 直接设置文本,存储文本的内存动态分配 */
lv_obj_set_size(label, 100, 50); /* 设置标签大小:长宽 */
lv_label_set_long_mode(label, LV_LABEL_LONG_DOT); /* 设置长文本后为省略模式 */
}
现象:

附:缓冲区标签崩溃现象
void my_gui(void)
{
lv_obj_t *label = lv_label_create(lv_scr_act()); /* 创建一个标签部件 */
lv_label_set_text_static(label, "hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo hallo"); /* 文本存储在缓存区中 */
lv_obj_set_size(label, 100, 50); /* 设置标签大小:长宽 */
lv_label_set_long_mode(label, LV_LABEL_LONG_DOT); /* 设置长文本后为省略模式 */
}
以上程序将标签文本存储在了缓存区中,文本是从代码段传入的是只读的,而lv_label_set_long_mode函数是改变文本的内容,从而就发生了崩溃,故说lv_label_set_text_static此函数不熟悉内存时需要慎用。
博客导航
本文来自博客园,作者:膝盖中箭卫兵,转载请注明原文链接:https://www.cnblogs.com/Skyrim-sssuuu/p/19204189

浙公网安备 33010602011771号
https://orcid.org/0000-0001-5102-772X