ESP32 LVGL8.1

您所在的位置:网站首页 设置label的标签内容 ESP32 LVGL8.1

ESP32 LVGL8.1

2023-06-30 11:46| 来源: 网络整理| 查看: 265

提示:本博客作为学习笔记,有错误的地方希望指正

文章目录 一、Label简介1.1概述 Overview1.2部分和风格 Parts and Styles1.3使用 Usage1.3.1设置文本 Set text1.3.2新行 New line1.3.3长模式 Long modes1.3.4文本重新上色 Text recolor1.3.5文本的选择 Text selection1.3.6很长的文字 Very long texts1.3.7符号 Symbols 1.4事件 Events1.5按键 Keys 三、Label API四、示例4.1显示个别字体颜色4.2字体模糊效果4.3显示自定义字体

一、Label简介 1.1概述 Overview

  标签是用于显示文本的基本对象类型。

1.2部分和风格 Parts and Styles

• LV_PART_MAIN 使用所有典型的背景属性和文本属性。填充值可用于在文本和背景之间添加空格。 • LV_PART_SCROLLBAR 当文本大于小部件的大小时显示的滚动条。. • LV_PART_SELECTED 告诉选定文本的样式。只能使用text_color和bg_color样式属性。

1.3使用 Usage 1.3.1设置文本 Set text

  您可以在运行时使用lv_label_set_text(label,“New text”)设置标签上的文本。它将动态分配一个缓冲区,所提供的字符串将被复制到该缓冲区中。因此,在该函数返回后,您不需要将传递给lv_label_set_text的文本保留在作用域内。   使用lv_label_set_text_fmt(label, “Value: %d”, 15)可以使用printf格式设置文本。.   标签能够显示来自静态字符缓冲区的文本。为此,使用lv_label_set_text_static(label,“Text”)。在这种情况下,文本不存储在动态内存中,而是直接使用给定的缓冲区。这意味着数组不能是函数退出时超出作用域的局部变量。常量字符串与lv_label_set_text_static一起使用是安全的(除非与LV_LABEL_LONG_DOT一起使用,因为它在适当的地方修改缓冲区),因为它们存储在ROM内存中,它总是可访问的。

1.3.2新行 New line

  新行字符由label对象自动处理。你可以用\n来换行。例如:“line1 \ nline2 \ n \ nline4”

1.3.3长模式 Long modes

  默认情况下,标签的宽度和高度被设置为lv_size_content,因此标签的大小自动扩展为文本大小。否则,如果显式地设置了宽度或高度(例如使用lv_obj_set_width或布局),可以根据几个长模式策略来操纵比标签宽度宽的行。类似地,如果文本的高度大于标签的高度,也可以应用这些策略。   实现函数void lv_label_set_long_mode(lv_obj_t * obj, lv_label_long_mode_t long_mode);

/**长模式行为。用于lv_label_ext_t * / LV_LABEL_LONG_WRAP, /** static lv_style_t style_shadow; //创建样式 lv_style_init(&style_shadow); //初始化样式 lv_style_set_text_opa(&style_shadow,LV_OPA_30); //设置样式的字体透明度 lv_style_set_text_color(&style_shadow,lv_color_black()); //设置样式字体颜色 lv_obj_t * shadow_label = lv_label_create(lv_scr_act()); //创建阴影label lv_obj_add_style(shadow_label,&style_shadow,0); //添加label的样式 lv_obj_t * main_label = lv_label_create(lv_scr_act()); //创建主label lv_label_set_text(main_label, "A simple method to create\n" "ahadows on a text.\n" "It even works with\n\n" "newlines and spaces.");//设置主样式字体 lv_label_set_text(shadow_label,lv_label_get_text(main_label)); //设置阴影样式字体 lv_label_get_text(main_label)获取label对象的字内容 lv_obj_align(main_label,LV_ALIGN_CENTER,0,0); //主样式居中显示 lv_obj_align_to(shadow_label,main_label,LV_ALIGN_TOP_LEFT,2,2); //相对位置显示 }

请添加图片描述

4.3显示自定义字体

  示例3主要实现自定义字体的显示,实现特定的中文或者其他文字的显示,可以不用加载字库实现字体的显示,我这里使用的是 LvglFontTool.exe ,然后在CMakeLists.txt文档中添加对应的.c文件,接着在我们文件测试文件中添加包含字体的头文件,需要修改的地方是在生成的.c文件中要添加适合自己的lvgl.h的文件,编译的时候会出现错误,这应该是这个软件还没有适配LVGL8的字体显示规格,我们将里面内容注释掉编译错误的即可。 在这里插入图片描述 在这里插入图片描述   最后在我们要实现的文档中引入测试字体的路径,直接设置label的显示字体即可。

LV_FONT_DECLARE(HelloESP32) //加载字体路径 lv_label_set_text(cz_label, "你好!乐鑫,我最近在使用ESP32跑LVGL,祝我好运吧!"); //设置显示字体 lv_obj_set_style_text_font(cz_label,&HelloESP32,0); //设置显示样式 /************************************************* * 函数名称 : Label_show_3 * 参 数 : 无 * 函数功能 : 显示其他字体 *************************************************/ void Label_show_3() { lv_obj_t * ltr_label = lv_label_create(lv_scr_act()); //创建主label lv_label_set_text(ltr_label, "In modern terminology, a microcontroller is similar to a system on a chip (SoC)."); //设置字内容 lv_obj_set_style_text_font(ltr_label, &lv_font_montserrat_16, 0); //设置样式内容 lv_obj_set_width(ltr_label, 310); //设置对象的宽度 lv_obj_align(ltr_label, LV_ALIGN_TOP_LEFT, 5, 5); //左上居中 lv_obj_t * rtl_label = lv_label_create(lv_scr_act()); //创建主label lv_label_set_text(rtl_label, "מעבד, או בשמו המלא יחידת עיבוד מרכזית (באנגלית: CPU - Central Processing Unit)."); //设置字内容 lv_obj_set_style_base_dir(rtl_label,LV_BASE_DIR_RTL,0); //设置样式内容 lv_obj_set_style_text_font(rtl_label,&lv_font_dejavu_16_persian_hebrew,0); //设置对象的宽度 lv_obj_set_width(rtl_label,310); //设置对象的宽度 lv_obj_align(rtl_label,LV_ALIGN_LEFT_MID,5,0); //左上居中 lv_obj_t * cz_label = lv_label_create(lv_scr_act()); //创建主label LV_FONT_DECLARE(HelloESP32) //加载字体路径 lv_label_set_text(cz_label, "你好!乐鑫,我最近在使用ESP32跑LVGL,祝我好运吧!"); //设置显示字体 lv_obj_set_style_text_font(cz_label,&HelloESP32,0); //设置显示样式 lv_obj_set_width(cz_label,240); //设置对象宽度 lv_obj_align(cz_label,LV_ALIGN_BOTTOM_LEFT,5,-5); //居中显示 }

  备注这里图片显示已在开发板验证 请添加图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3