这是本文档旧的修订版!
银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
技术论坛 | http://www.eeschool.org | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2020-11-19 | yang | 初次建立 |
标签是用于显示文本的基本对象类型,是用户在人机交互中获取机器信息的重要方式。标签只有一个主要部分,称为 LV_LABEL_PART_MAIN 。它使用所有典型的背景属性和文本属性。填充值可用于使文本的区域在相关方向上变小。
在程序运行时,用户可以使用lv_label_set_text(label, “New text”)动态的设置标签文本。它将动态分配一个缓冲区,并将提供的字符串复制到该缓冲区中。因此,在该函数返回后,您无需将传递的文本保留。
设置标签文本时可以使用格式化输出,例如lv_label_set_text_fmt(label, “Value: %d”, 15)。标签能够显示静态字符缓冲区中有 \0 终止符的文本。要设置静态字符串,请使用函数lv_label_set_static_text(label, “Text”)。在这种情况下,文本不会存储在动态内存中,而是直接使用给定的缓冲区。这意味着数组不能是在函数退出时超出范围的局部变量。常量字符串可以安全地使用(但不能与LV_LABEL_LONG_DOT一起使用,否则它会就地修改缓冲区),因为它们存储在 ROM 存储器中,该存储器始终可以访问。
下面是一个标签格式化显示变量的小例子:
void lv_gui_run(void) { int t=0; /*定义变量t*/ lvgl2rtt_init("lcd"); /*初始化lvgl2rtt*/ lv_obj_t * label1 = lv_label_create(lv_scr_act(), NULL); /*创建一个标签在屏幕中*/ while(true){ lv_label_set_text_fmt(label1, "timer: %d s",t++); /*格式化显示*/ rt_thread_mdelay(1000); /*延时1ms*/ } }
在程序换行符由标签对象自动处理。您可以用来 \n 换行。例如: “line1\nline2\n\nline4”
lvgl2rtt_init("lcd"); lv_obj_t * label1 = lv_label_create(lv_scr_act(), NULL); /*创建一个标签在屏幕中*/ lv_label_set_text(label1, "hello world\nthis is GINGKO\niCore4T_RT-Thread_LVGL");
在默认情况下,标签对象的宽度会自动扩展为文本大小。此外,文本可以根据几种长文本模式策略来操作:
用户可以使用lv_label_set_long_mode(label, LV_LABEL_LONG_…)来指定长文本模式,不过要注意的是,当创建标签并设置其文本时,标签的大小已扩展为文本大小,因为默认模式为 LV_LABEL_LONG_EXPAND ,所以,在更改为长文本模式之后,一定要设置标签新的尺寸lv_obj_set_width/height/size(),否则没有效果。 另一个重要的注意事项是在LV_LABEL_LONG_DOT 模式下使用lv_label_set_text 或时 lv_label_set_array_text时,将分配一个单独的缓冲区,复制文本缓冲区内容,以便添加/删除“…”,不过该过程用户察觉不到。但是lv_label_set_static_text 比较特殊,传递给它的缓冲区必须是可写的,这样才能够使用LV_LABEL_LONG_DOT。
文本的行可以通过lv_label_set_align(label, LV_LABEL_ALIGN_LEFT/RIGHT/CENTER)左右对齐,标签默认左对齐。请注意,它将仅对齐标签内的多行,而不对齐标签对象本身。标签本身不支持垂直对齐;您应该将标签放在更大的容器中,然后将整个标签对象对齐lv_obj_align(obj, obj_ref, LV_ALIGN_…, x_ofs,y_ofs)。
在文本中,您可以使用命令来重新着色整行或部分文本,默认为黑色字体。例如:“Write a #ff0000 red# word”将显示为“Write a red word”,#ff0000 为red、green、blue值。可以使用lv_label_set_recolor()为每个标签分别启用此功能。 请注意,重新着色只能在一行中进行。因此,不应在重新着色的文本中使用 \n ,也不应将标签设置为LV_LABEL_LONG_BREAK 模式,否则新行中的文本将不会重新着色。
在LVGL中,创建文字阴影有个简单的方法,就是创建一个内容一样的阴影标签,与主标签对齐重合后往右下角偏移变作文字阴影。因为新创建的对象在旧对象之上,所以应该先创建阴影标签。
LVGL通过保存一些额外的数据(〜12 个字节)以加快绘图速度,可以有效地处理很长的字符(> 40k 个字符)。用户要启用此功能,请在 lv_conf.h 中将LV_LABEL_LONG_TXT_HINT设置为1。