合宙Air724UG LuatOS-Air LVGL API控件-标签 (Label)

news2024/11/20 20:25:42

标签 (Label)

Label.png


标签是 LVGL 用来显示文字的控件。

示例代码

label = lvgl.label_create(lvgl.scr_act(), nil)
lvgl.label_set_recolor(label, true)                     
lvgl.label_set_text(label, "#0000ff Re-color# #ff00ff words# #ff0000 of\n# align the lines to\n the center and wrap\n long text automatically.")
lvgl.obj_set_width(label, 150)  
lvgl.label_set_align(label, lvgl.LABEL_ALIGN_CENTER)
lvgl.obj_align(label, nil, lvgl.ALIGN_CENTER, 0, -40)

创建

标签是通过 lvgl.label_create 函数创建的。

label = lvgl.label_create(lvgl.scr_act(), nil)

设置文字

可以使用 lvgl.label_set_text 设置标签上的文字显示内容。

lvgl.label_set_text(label, "Hello World!")

image.png

长模式

标签是有宽度的,默认情况下,在设置文字后会自行调整,标签宽度会自动扩充到文本宽度。但是这种显示方式是可以进行更改的,也就是设置 长模式,长模式是通过函数 lvgl.label_set_long_mode 进行设置的。使用长模式有个前提,就是文字内容需要比标签长。所以需要先设置 长模式,然后设置标签宽度,最后才是设置文字内容。长模式的选项有以下几种:

-- 设置模式
lvgl.LABEL_LONG_EXPAND 	    
lvgl.LABEL_LONG_BREAK  	    
lvgl.LABEL_LONG_CROP   	   
lvgl.LABEL_LONG_DOT    	      
lvgl.LABEL_LONG_SROLL  	    
lvgl.LABEL_LONG_SROLL_CIRC  

我们先来看下 lvgl.LABEL_LONG_BREAK 的显示效果,注意顺序,长模式宽度文字

lvgl.label_set_long_mode(lab, lvgl.LABEL_LONG_BREAK)
lvgl.obj_set_width(lab, 60)
lvgl.label_set_text(lab, "ABCDEFGHIJKLMK")

image.png

lvgl.LABEL_LONG_CROP 超出长度内容部分会直接截断

lvgl.label_set_long_mode(lab, lvgl.LABEL_LONG_CROP)

image.png

lvgl.LABEL_LONG_DOT 同样会截断显示,但是会在标签后添加 ...,来表示有省略内容。

lvgl.label_set_long_mode(lab, lvgl.LABEL_LONG_DOT)

image.png

lvgl.LABEL_LONG_SROLL 是设置滚动模式,文字滚动方式是左右滚动。

lvgl.label_set_long_mode(lab, lvgl.LABEL_LONG_SROLL)

jdfw6.gif

lvgl.LABEL_LONG_SROLL 也是设置滚动模式,文字滚动方式是循环滚动。

lvgl.label_set_long_mode(lab, lvgl.LABEL_LONG_SROLL_CIRC)

jdfw7.gif

文字方向

文字的默认方向是依靠文本方向的,中英文都是从左向右书写阅读的,但是有些文字的书写阅读方向是从右向左的,比如阿拉伯文,lvgl.LABEL_ALIGN_AUTO 就是根据文字方向对齐。文字对齐方向就是靠左,靠右,居中三种,这个没有什么好展示的了,这里有一点需要注意的是,在使用长模式时需要文字内容比标签宽度宽,但是要看出文字对齐方向效果则需要文字内容比标签宽度窄,所以我们需要把标签宽度加长,这里只展示个靠右的效果。

lvgl.obj_set_width(lab, 160)
lvgl.label_set_text(lab, "ABCDE")
lvgl.label_set_align(lab, lvgl.LABEL_ALIGN_RIGHT)

image.png

设置颜色

文本设置颜色可以通过启用 recolor 实现:

lvgl.label_set_recolor(lab, true)

随后就可以通过命令设置文本的不同部分颜色,来对文本进行重新着色。标签会把 # 打头的6个数字识别为颜色值,该模式可以随时取消。

lvgl.label_set_recolor(lab, true)
lvgl.label_set_text(lab, "#FF0000 RED#\n#00FF00 GREEN#\n#0000FF BLUE#\n")

image.png

编辑

可以通过函数对标签的文本进行简单的编辑,LVGL 的官方库是由 C语言 编写,C语言本身对文本操作不是特别方便。Lua 相对于 C 来说文本处理能力要强很多,所以此接口用途范围也比较窄。label_cut_text 删除文本,虽然 cut 看起来像是"剪切",实际上这里的意思是"删除",该函数的返回值是空,并没有把剪切完的文本传递出来。label_ins_text 插入文本,在指定的位置插入文本。

API

lvgl.label_create(par, copy)|
|功能|创建一个标签对象|
|返回|指向创建的标签对象的指针|
|参数||
|par|指向对象的指针, 它将是新键对象的父对象|
|copy|指向标签对象的指针, 如果不为 nil, 则将从其复制新对象|

lvgl.label_create

调用lvgl.label_create(label, text)
功能设置标签的新文本
参数
label指向标签对象的指针
text需要对标签设置的文本

lvgl.label_set_long_mode

调用lvgl.label_set_long_mode(label, mode)
功能设置标签的长模式显示
参数
label指向标签对象的指针
mode标签的长模式
lvgl.LABEL_LONG_EXPAND
lvgl.LABEL_LONG_BREAK
lvgl.LABEL_LONG_CROP
lvgl.LABEL_LONG_DOT
lvgl.LABEL_LONG_SROLL
lvgl.LABEL_LONG_SROLL_CIRC

lvgl.label_set_align

调用lvgl.label_set_align(label, align)
功能设置标签的文字对齐方式
参数
label指向标签对象的指针
align标签的对齐方式
lvgl.LABEL_ALIGN_AUTO
lvgl.LABEL_ALIGN_CENTER
lvgl.LABEL_ALIGN_LEFT
lvgl.LABEL_ALIGN_RIGHT

lvgl.label_set_recolor

调用lvgl.label_set_recolor(label, en)
功能启动重新着色功能
参数
label指向标签对象的指针
entrue 打开重新着色,false 关闭重新着色

lvgl.label_set_anim_speed

调用lvgl.label_set_anim_speed(label, speed)
功能设置文本滚动的速度
参数
label指向标签对象的指针
speed文本滚动的速度,单位是 像素/秒

lvgl.label_ins_text

调用lvgl.label_ins_text(label, pos, txt)
功能在标签上插入文本
参数
label指向标签对象的指针
pos文本插入的位置
txt需要插入的文本

lvgl.label_cut_text

调用lvgl.label_cut_text(label, pos, cnt)
功能从标签中删除文本
参数
label指向标签对象的指针
pos文本删除的位置
cnt删除文本的个数

lvgl.label_is_char_under_pos

调用lvgl.label_is_char_under_pos(label, tpos)
功能检查某坐标点位置是否绘制有字符
返回有字符 true,无字符 false
参数
label指向标签对象的指针
tpos坐标点的 table,如 {2, 3}

lvgl.label_get_text

调用lvgl.label_get_text(label)
功能获取标签的设置文本
返回当前标签文本
参数
label指向标签对象的指针

lvgl.label_get_align

调用lvgl.label_get_align(label)
功能获取标签的对齐方式
返回当前标签的对齐方式
参数
label指向标签对象的指针

lvgl.label_get_anim_speed

调用lvgl.label_get_anim_speed(label)
功能获取标签的滚动速度
返回当前标签的滚动速度
参数
label指向标签对象的指针

lvgl.label_get_long_mode

调用lvgl.label_get_long_mode(label)
功能获取标签的显示模式
返回当前标签的显示模式
参数
label指向标签对象的指针

lvgl.label_get_recolor

调用lvgl.label_get_recolor(label)
功能获取当前文本着色开关
返回当前文本着色是否打开
形参
label指向标签对象的指针

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/971266.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vision Transformer(VIT 网络架构)

论文下载链接:https://arxiv.org/abs/2010.11929 文章目录 引言1. VIT与传统CNN的比较2. 为什么需要Transformer在图像任务中? 1. 深入Transformer1.1 Transformer的起源:NLP领域的突破1.2 Transformer的基本组成1.2.1 自注意机制 (Self-Atte…

C++将派生类赋值给基类

在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。 数据类型转换的前提是,编译器知道如何对数据进行取舍…

星际争霸之小霸王之小蜜蜂(十)--鼠道

系列文章目录 星际争霸之小霸王之小蜜蜂(九)--狂鼠之灾 星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大脸猫 星际争霸之小霸王之小蜜蜂(七)--消失的子弹 星际争霸之小霸王之小蜜蜂(六)-…

大数据课程K20——Spark的SparkSql概述

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的SparkSQL由来; ⚪ 了解Spark的SparkSQL特点; ⚪ 了解Spark的SparkSQL优势; ⚪ 掌握Spark的SparkSQL入门; 一、SparkSQL概述 1. 概述 Spark为结构化数据处理引入了一个称…

SQLI-labs-第四关

知识点:get双引号(")和括号注入 思路: 1、判断注入点 首先,输入?id1 --,看看正常的回显状态 接着输入?id1 --,结果还是正常回显,说明这里不存在单引号问题 试试双引号,这里爆出了sql语…

深入了解GCC编译过程

关于Linux的编译过程,其实只需要使用gcc这个功能,gcc并非一个编译器,是一个驱动程序。其编译过程也很熟悉:预处理–编译–汇编–链接。在接触底层开发甚至操作系统开发时,我们都需要了解这么一个知识点,如何…

C# 如何读取dxf档案

需求来源: 工作中,客户提供一张CAD导出的dxf 档案,然后需要机器人将其转成点位,走到对应的位置。 下面介绍一下dxf档案到底是什么?以及语法规则。 dxf 格式介绍:DXF 格式 dxf LINE 格式。 其实上述文档…

软考:中级软件设计师:多媒体基础,音频,图像,颜色,多媒体技术的种类,图像音频视频的容量计算,常见的多媒体标准

软考:中级软件设计师:多媒体基础 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 &am…

在公网上使用SSH远程连接安卓手机Termux:将Android手机变身为远程服务器

文章目录 前言1.安装ssh2.安装cpolar内网穿透3.远程ssh连接配置4.公网远程连接5.固定远程连接地址 前言 使用安卓机跑东西的时候,屏幕太小,有时候操作不习惯。不过我们可以开启ssh,使用电脑PC端SSH远程连接手机termux。 本次教程主要实现在…

介绍OpenCV

OpenCV是一个开源计算机视觉库,可用于各种任务,如物体识别、人脸识别、运动跟踪、图像处理和视频处理等。它最初由英特尔公司开发,目前由跨学科开发人员社区维护和支持。OpenCV可以在多个平台上运行,包括Windows、Linux、Android和…

高等数学刷题

分段函数主要看在临界点处的左右极限是否相等,若相等则整段函数即为连续 (反之若是连续函数,在某一点为间断点,则可推导出一定为可去间断点) 无定义的点一定为间断点 如果该点有极限则为可去间断点 由于x的不确定导…

RK3568-spi-适配1.8寸TFT彩屏驱动芯片st7735s

RK3568-spi-适配1.8寸TFT彩屏 驱动芯片st7735s 显示分辨率128x160硬件连接 VCC -- 3.3V GND -- GND BL -- 背光控制 CS -- 片选引脚 DC -- 数据/命令控制 RES -- 屏幕复位 SCL -- i2c时钟引脚 SDA -- i2c数据引脚设备树编写 &spi0 {pinctrl-names = "default"…

docker安装Apache NIFI

说明 系统:CentOS7.9 nifi版本:1.23.2 下载镜像 nifi的镜像比较大,大概有2G左右,下载时间根据个人网速而定 docker pull apache/nifi:1.23.2 查看下载好的镜像 docker images 复制容器数据 创建挂载目录 创建挂载目录的目…

【Yolov5+Deepsort】训练自己的数据集(3)| 目标检测追踪 | 轨迹绘制 | 报错分析解决

📢前言:本篇是关于如何使用YoloV5Deepsort训练自己的数据集,从而实现目标检测与目标追踪,并绘制出物体的运动轨迹。本章讲解的为第三部分内容:数据集的制作、Deepsort模型的训练以及动物运动轨迹的绘制。本文中用到的数…

qt day 6

登录界面 #include "window.h" #include<QDebug> #include<QIcon> Window::Window(QWidget *parent) //构造函数的定义: QWidget(parent) //显性调用父类的构造函数 {//判断数据库对象是否包含了自己使用的数据库Student.dbif(!db.contains(&…

20230904 QT客户端服务器搭建聊天室

Ser cpp#include "app.h" #include "ui_app.h"APP::APP(QWidget *parent):QWidget(parent),ui(new Ui::APP) {ui->setupUi(this);this->resize(550,400);ui->Line->setAlignment(Qt::AlignCenter);//标签文本对齐方式 居中ui->Line->se…

爬虫源码---爬取自己想要看的小说

前言&#xff1a; 小说作为在自己空闲时间下的消遣工具&#xff0c;对我们打发空闲时间很有帮助&#xff0c;而我们在网站上面浏览小说时会被广告和其他一些东西影响我们的观看体验&#xff0c;而这时我们就可以利用爬虫将我们想要观看的小说下载下来&#xff0c;这样就不会担…

突破瓶颈:如何应对高级职位的面试

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

K8S自动化运维容器Docker集群

K8S&#xff1a;K8S自动化运维容器化(Docker)集群 一.k8s概述 1.k8s是什么 &#xff08;1&#xff09;K8S全程为Kubernetes&#xff0c;由于K到S直接有8个字母简称为K8S。 &#xff08;2&#xff09;版本&#xff1a;目前一般是1.18~1.2.0&#xff0c;后续可能会到1.24-1.2…

Qt 开发 CMake工程

Qt 入门实战教程&#xff08;目录&#xff09; 为何要写这篇文章 目前CMake作为C/C工程的构建方式在开源社区已经成为主流。 企业中也是能用CMake的尽量在用。 Windows 环境下的VC工程都是能不用就不用。 但是&#xff0c;这个过程是非常缓慢的&#xff0c;所以&#xff0…