LVGL笔记7--lv_label标签控件

2023-11-19

LVGL笔记7–lv_label标签控件

lv_label标签控件是LVGL中使用最频繁的控件,主要是用来显示文本信息的,可在程序运行中动态修改文本内容,支持换行显示、图标字体、部分文本重绘色、长文本显示、6种显示模式等功能


lv_label控件的API接口
  1. 长文本模式数据类型

    enum {
        LV_LABEL_LONG_EXPAND,
        LV_LABEL_LONG_BREAK, 
        LV_LABEL_LONG_DOT, 
        LV_LABEL_LONG_SROLL,
        LV_LABEL_LONG_SROLL_CIRC,
        LV_LABEL_LONG_CROP, 
    };
    typedef uint8_t lv_label_long_mode_t;
    

    当标签中的文字内容较多时,有以上六种显示模式

    • LV_LABEL_LONG_EXPAND:自动扩展标签对象宽度来包裹文本内容。
    • LV_LABEL_LONG_BREAK:保持标签宽度不变,自动换行来包裹文本内容
    • LV_LABEL_LONG_DOT:保持标签对象长宽都不变,文本过长时在末尾显示3个省略点…(点的个数可以在配置文件中自定义)
    • LV_LABEL_LONG_SROLL:保持标签对象长宽都不变,文本过长时自动循环前后滚动显示
    • LV_LABEL_LONG_SROLL_CIRC:保持标签对象长宽都不变,文本过长时自动循环滚动显示(环形滚动)
    • LV_LABEL_LONG_CROP:保持标签对象长宽都不变,文本过长时超出的部分自动剪切掉
  2. 文本内容对齐数据类型

    enum {
        LV_LABEL_ALIGN_LEFT, 	//文本左对齐
        LV_LABEL_ALIGN_CENTER, 	//文本居中对齐
        LV_LABEL_ALIGN_RIGHT,	//文本右对齐
    };
    typedef uint8_t lv_label_align_t;
    

    标签中的文本内容只有三种对齐方式:左对齐、居中、右对齐

  3. 标签样式数据类型

    enum {
     	LV_LABEL_STYLE_MAIN,
    };
    typedef uint8_t lv_label_style_t;
    

    标签样式数据类型只有这一种,具体还不理解,后续会添加笔记的


API函数接口
  1. 创建标签

    /*--------------------------------------------------------------------------------
    	parent:指向父对象
    	copy:表示创建新对象时,把copy对象上的属性值复制过来
    	返回值:创建成功则返回新创建的标签对象,失败返回NULL
    	返回值类似FreeRTOS中的任务句柄,后续对于此标签的所有操作都有基于这个
    --------------------------------------------------------------------------------*/
    lv_obj_t * lv_label_create(lv_obj_t * parent, const lv_obj_t * copy);
    
    
  2. 设置标签显示的文本

    • 动态文本(动态的分配内存来存储文本内容)

      •   //	label:标签对象(创建标签时的返回值)
          //	text:新的文本内容,文本内容以\0结尾,如果传入NULL表示刷新当前文本(字符串)
          void lv_label_set_text(lv_obj_t * label, const char * text);//设置动态文本--字符串形式
        
      •   //	label:标签对象(创建标签时的返回值)
          //	array:新的文本内容,不需要\0结尾,如果传入NULL表示刷新当前文本(数组名)
          // 	size:传入的数组大小,单位是字节
          void lv_label_set_array_text(lv_obj_t * label, const char * array, uint16_t size);//设置动态文本--数组形式
        

        设置动态文本有字符串形式和数组形式,其实就是文本信息传入形式不同,一个是字符串形式,一个是数组形式。

    • 静态文本(节省内存)

      •   //	label:标签对象
          //	text:新的文本内容,’\0’空字符结尾,如果传NULL的话,那么代表刷新当前文本内容
          void lv_label_set_static_text(lv_obj_t * label, const char * text);
        
      •   //	label:标签对象(创建标签时的返回值)
          //	array:新的文本内容,不需要\0结尾,如果传入NULL表示刷新当前文本(数组名)
          // 	size:传入的数组大小,单位是字节
          void lv_label_set_array_text(lv_obj_t * label, const char * array, uint16_t size);
        

        设置静态文本,标签控件内不会申请内存来存放文本,所以比较节省内存,但是外部传入的文本内容不能删除或随意更改。(目前所说的文本都是指英文或者是符号,中文显示需要单独添加字库)

  3. 设置长文本模式

    /*-------------------------------------------------------------------------------
    	label:标签对象
    	long_mode:长文本模式(6种)
                        LV_LABEL_LONG_EXPAND,
                        LV_LABEL_LONG_BREAK, 
                        LV_LABEL_LONG_DOT, 
                        LV_LABEL_LONG_SROLL,
                        LV_LABEL_LONG_SROLL_CIRC,
                        LV_LABEL_LONG_CROP, 
    --------------------------------------------------------------------------------*/
    void lv_label_set_long_mode(lv_obj_t * label, lv_label_long_mode_t long_mode);
    

    此函数调用位置需要特别注意:必须放在 lv_obj_set_size 调用的前面,否则设置的宽和高是无

    效的,先设置长文本模式,在设置标签大小。

    不使用此函数时,系统默认是LV_LABEL_LONG_EXPAND模式,自动根据文本长度增加标签宽度,可以在文本中加入\n来换行

  4. 设置文本对齐方式

    /*-------------------------------------------------------------------------------
    	label:标签对象
    	align:对齐方式(3种)
    --------------------------------------------------------------------------------*/
    void lv_label_set_align(lv_obj_t * label, lv_label_align_t align);
    
  5. 是否使能文本重绘色功能

    /*-------------------------------------------------------------------------------
    	label: 标签对象
    	en: 是否使能
    --------------------------------------------------------------------------------*/
    void lv_label_set_recolor(lv_obj_t * label, bool en);
    

    使能后,可以对标签的部分文本进行颜色配置,一个标签中文本显示出不同颜色。

    使用格式为: #十六进制颜色值 文本# ,注意了颜色值和文本之间至少得有一个空格。

    lv_label_set_recolor(label1,true);//先得使能文本重绘色功能

    lv_label_set_text(label1,"#ff0000 red#,#00ff00 green#,#0000ff blue#");//使用了 3 次重绘色

  6. 是否使能背景重绘制功能

    /*-------------------------------------------------------------------------------
    	label: 标签对象
    	en: 是否使能
    --------------------------------------------------------------------------------*/
    void lv_label_set_body_draw(lv_obj_t * label, bool en);
    
    lv_label_set_style(label1,LV_LABEL_STYLE_MAIN,&lv_style_plain_color);//设置主背景的样
    式为lv_style_plain_color
    

    默认情况下,lv_label 标签对象是没有背景的,即透明的,但是我们可以通过这个接口和样式使标签对象具有背景。

  7. 设置动画速度

    /*-------------------------------------------------------------------------------
    	label: 标签对象
    	anim_speed: 动画速度,单位为 px/sec(一秒多少个像素)
    --------------------------------------------------------------------------------*/
    void lv_label_set_anim_speed(lv_obj_t * label, uint16_t anim_speed);
    

    当标签文本设置滚动时(LV_LABEL_LONG_SROLL/SCROLL_CIRC 模式下),可以通过这个函数设置滚动速度,不进行设置时有一个默认速度。

  8. 设置样式

    /*-------------------------------------------------------------------------------
    	label: 标签对象
    	type: 哪一个部件的样式,目前就 LV_LABEL_STYLE_MAIN 主背景部件这一个可选值
    	style: 样式
    --------------------------------------------------------------------------------*/
    
    static inline void lv_label_set_style(lv_obj_t * label, lv_label_style_t type, const lv_style_t *style)
    
  9. 插入文本

    /*-------------------------------------------------------------------------------
        label: 标签对象
        pos: 插入的位置,0 代表从最前面插入, LV_LABEL_POS_LAST 代表从最后面插入
       	txt: 要插入的文本
    --------------------------------------------------------------------------------*/
    void lv_label_ins_text(lv_obj_t * label, uint32_t pos, const char * txt);
    

    使用此函数,文本必须是动态设置的,不能是静态文本,插入位置代表字符位置,例如 1 表示在第一个字符后面插入。

  10. 剪切文本

    /*-------------------------------------------------------------------------------
        label: 标签对象
    	pos: 剪切的起始位置,从 0 开始
    	cnt: 要剪切的字符数量
    --------------------------------------------------------------------------------*/
    void lv_label_cut_text(lv_obj_t * label, uint32_t pos, uint32_t cnt);
    

    剪切文本亦可以理解为删除文本,可以删除指定区域指定长度的文本,当然也必须是动态文本才可以使用此函数。

有些函数接口没有总结

根据正点原子的LVGL教程总结的笔记,以后使用中遇到问题会继续总结在这里。

2021-2-1-WRS

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LVGL笔记7--lv_label标签控件 的相关文章

  • 流计算框架 Flink 与 Storm 的性能对比

    概述 将分布式实时计算框架 Flink 与 Storm 进行性能对比 为实时计算平台和业务提供数据参考 一 背景 Apache Flink 和 Apache Storm 是当前业界广泛使用的两个分布式实时计算框架 其中 Apache Sto
  • 04-分布式资源管理系统YARN

    目录 一 YARN简介 1 YARN的由来 2 什么是YARN 二 YARN原理 1 系统架构 1 1 角色分工 1 2 设计思想 1 3 工作机制 1 4 集群部署 2 YARN高可用 三 YARN资源调度策略 1 FIFO调度器 2 容
  • Android智能下拉刷新框架—SmartRefreshLayout的使用

    转载请注明出处 http blog csdn net jarchie520 article details 78193387 上个月因为自己太懒了 加上又发生了一点小事 就没能及时更新博客 下了班回家面壁思过去吧 今天这篇文章主要是介绍一下
  • 帮程序员减压放松的10个良心网站

    同学们工作之余 不妨放下微博跟朋友圈 来这10个网站感受一下看着就醉了的情境 念完往上一推音乐键 我往后一靠 潮乎乎的软皮耳机里头 音乐排山倒海 今天推荐的网站 利用代入感强的图片与音频 迅速帮你抹平焦虑 获得平和心态 特别献需求改千遍的程
  • LeetCode-3. 无重复字符的最长子串 -- Python解

    原题描述 给定一个字符串 s 请你找出其中不含有重复字符的 最长子串 的长度 示例 1 输入 s abcabcbb 输出 3 解释 因为无重复字符的最长子串是 abc 所以其长度为 3 示例 2 输入 s bbbbb 输出 1 解释 因为无
  • 2011年中的macmini 系统安装,简直作死

    不想再爱mac了 再不要爱了 完结 这几天真的时间就耗在这系统上了 之前一直用的是win10系统 直接把苹果系统整个的推掉了 由于是真的不知道能直接U盘装10 13版本 索性理所当然的直接一步到位到10 14最新版 所以花了半天时间找镜像d
  • HTML中Form表单的使用

    1 form表单标记 表单标记以
  • 金融圈:Hoping Club华英会将重金注资收购REVA

    近期 金融圈有消息传出 华英会或将注资收购REVA提高其所持有的股份 来获取REVA中国大陆区ArtStreet质押平台的运营权 这一消息受到了很多业内人士的关注 一旦此次收购坐实成功也就意味着华英会将获得 中国大陆REVA质押平台的运营权
  • Mybatis-plusMybatis 通过获取sqlSession执行原生sql(执行程序代码中sql字符串)

    Mybatis plus Mybatis通过获取sqlSession执行原生jdbc执行sql 此处demo只写了执行查询sql 有需要可以执行增删改查都可 与原生jdbc调用方式一样 Component Slf4j public clas
  • 178、锐捷交换机恢复出厂和各种基本配置

    锐捷最详细的基础命令 一 锐捷交换机配置原理 我们来看下锐捷的日常配置命令原理 1 进入特权模式 Ruijie gt enable 进入特权模式 2 查看设备flash当前文件列表 Ruijie dir 查看flash当前文件列表 3 将配
  • faster RCNN 的细节理解

    1 anchors不同的大小但是采用了ROI pooling一样的策略 都映射到3 3的卷积核上 最后通过1 1的卷积核 相当与全连接分成了18类 9个anchors的话 2 分类的时候 reshape 两次 第一次为了softmax分类
  • Go的并发的退出

    有时候我们需要通知goroutine停止它正在干的事情 比如一个正在执行计算的web服务 然而它的客户端已经断开了和服务端的连接 Go语言并没有提供在一个goroutine中终止另一个goroutine的方法 由于这样会导致goroutin
  • #452. 序列操作

    序列操作 题目 Daimayuan Online Judge 问题描述 思路 首先想的是第二次操作的y可以将前面所以操作进行抵消 只需要第二次操作的最大值即可 但是发现 对于第一个操作 它是单点修改 每修改一次对于第二次操作都是有影响的 导
  • 最简单的区块链实现,不到50行代码!(一)

    什么是区块链 Blockchain 一个电子记账本 以比特币和其他密码加密货币进行的交易公开地 按照日期顺序记录其中 总的来说 它是一个公开的数据库 新的数据存储在一个称为区块的容器中 并且附加到一个 不可变 的链条 即区块链 上 链条上还
  • 《基于Python的大数据分析基础及实战》第二章

    第二章 个人信息 kwd info kwd info kwd info ipynb等文件下载 https wwm lanzouf com iklXf023qeef 对数据进行分析首先得对数据进行处理 本章主要介绍P thon在数据处理方面的

随机推荐

  • 5.2 主机扫描:主机探测

    目录 一 预备知识 主机扫描方法 二 实验环境 三 实验步骤 一 预备知识 主机扫描方法 主机扫描 Host Scan 是指通过对目标网络 一般为一个或多个IP网段 中主机IP地址的扫描 以确定目标网络中有哪些主机处于运行状态 主机扫描的实
  • Ubuntu下,Java中利用JNI调用codeblocks c++生成的动态库的使用步骤

    1 打开新立得包管理器 搜索JDK 选择openjdk 6 jdk安装 2 打开Ubuntu软件中心 搜索Eclipse 选择Eclipse集成开发环境 安装 3 打开Eclipse File gt New gt Java Project
  • 剑指Offer 22. 链表中倒数第k个节点(Easy)/ 19. 删除链表的倒数第 N 个结点(Medium)/ ListNode调用!!!

    LeetCode 19 删除链表的倒数第 N 个结点 Medium 题目链接 题解 链表中倒数第 k 个节点 双指针 清晰图解 思路 代码 Definition for singly linked list class ListNode d
  • Unity 音频卡顿 静帧 等待等问题的解决方案

    是否遇到过在Unity中加载音频文件卡顿 也就是画面卡住 的现象 特别是加载外部音频文件时 虽然时间很短 但这终归不是什么好现象 尤其是打游戏的话 影响很大 但是一些有牌面的Boss也不能不配音乐 当然也可以通过其它方式解决 比如特定条件统
  • 《人工智能导论》 第7章 机器学习

    机器学习 机器学习的基本概念 机器学习 Machine learning 使计算机能模拟人的学习行为 自动地通过学习来获取知识和技能 不断改善性能 实现自我完善 机器学习主要研究以下三个问题 学习机理 人类获取知识 技能和抽象概念的天赋能力
  • win7安装PS2019CC启动时报d3dcompiler_47.dll的问题解决

    原先安装的PS2017太卡顿了 有些功能用的也不习惯 卸载准备重装一下PS2019 在安装时发现报错 具体如下图所示 因此在网上下载了D3DCOMPILER 47 dll程序 放到了指定文件夹还是不行 百度参考这个解决了 WIN7缺少D3D
  • 全局光照算法:reflective shadow maps

    1 技术理解 RSM的全称是reflective shadow maps 受到Instant Radiosity这个离线技术的启发 其思想和ShadowMap的思想近似 在正式介绍和了解这个技术之前 我需要确定RSM用处何在 我想 RTR4
  • Docker-swarm 介绍,集群,多服务部署实战

    一 什么是Docker Swarm Swarm是Docker公司推出的用来管理docker集群的平台 几乎全部用GO语言来完成的开发的 代码开源在https github com docker swarm 它是将一群Docker宿主机变成一
  • flutter doctor不识别已安装的android studio及授权报错

    不识别解决 flutter config android studio dir C Program Files Android Android Studio 授权报错解决 Open Android Studio Tools gt SDK M
  • Unity使用Remote直接在手机上调试游戏

    Unity Remote是一个调试小工具 方便在手机上直接显示运行效果 并不需要Unity打包 只要在手机上安装UnityRemote APK程序 然后Unity上点击运行就可以了 因为我一般很少在手机上测试 本来都想不起来这个Remote
  • 用Python帮忙找指定小说最新更新且网速最快的网站

    一 引言 这个五一假期自驾回老家乡下 家里没装宽带 用手机热点方式访问网络 这次回去感觉4G信号没有以前好 通过百度查找小说最新更新并打开小说网站很慢 有时要打开好多个网页才能找到可以正常打开的最新更新 为了躲懒 老猿决定利用Python爬
  • 基于rCore的试点班lab1 实现一个系统调用

    实现一个属于你的系统调用 并写一个用户进程来调用该系统调用 该系统调用的功能为 输出你的名字 拼音即可 和学号 相关知识 系统调用 是操作系统提供给应用程序使用的接口 可以理解为一种可供应用程序调用的特殊函数 应用程序可以发出系统调用请求来
  • Python 基础(一):入门必备知识

    目录 1 标识符 2 关键字 3 引号 4 编码 5 输入输出 6 缩进 7 多行 8 注释 9 数据类型 10 运算符 10 1 常用运算符 10 2 运算符优先级 基础 进阶 爬虫 自动化 数据分析 编写小游戏 趣味 Python 文档
  • ajax xhr参数无法接收到,AJAX XHR-Call会创建无效的参数异常

    所以我尝试从异步任务 在此处未显示 因为它不相关 我认为它工作 中的值通过Jquery xhr请求放入进度条中 服务器端的方法并不相关 因为它的工作方式和jquery xhr call都可以 仅限第一次 AJAX XHR Call会创建无效
  • Rasa中文聊天机器人开发指南(3):Core篇

    文章目录 1 对话管理1 1 多轮对话1 2 对话管理 2 Rasa Core 2 1 Stories 2 2 Domain 2 3 Responses 2 4 Actions 2 5 Policies 2 6 Slots 2 6 1 Sl
  • nvm-use成功,但是实际并没有切换到对应node版本

    nvm use命令行运行成功 但是nvm list显示并没有成功 解决方案 情况描述 说明 使用nvm安装完node版本成功之后 nvm list显示并没有切换成功 node v使用的不是use版本 原因 因为在安装nvm之前 独自安装了一
  • rtsp协议c语言,RTSP协议

    RTSP简介 RTSP Real Time Streaming Protocol 是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议 RTSP对流媒体提供了诸如暂停 快进等控制 而它本身
  • 浏览器无法加载本地文件

    问题描述 在Visual Studio Code 编写HTML文件时需要将 csv文件内容在浏览器控制台窗口输出 浏览器控制一直报错 如下图所示 原因 跨域资源共享问题 本地文件是放在file 这样的系统下 而非网络资源比如http 下 造
  • Matlab实现PID控制仿真(附上30个完整仿真源码+数据)

    本文介绍了如何使用Matlab实现PID控制器的仿真 首先 我们将简要介绍PID控制器的原理和控制算法 然后 我们将使用Matlab编写一个简单的PID控制器 并使用仿真环境来验证其性能 最后 我们将通过调整PID控制器的参数来优化控制系统
  • LVGL笔记7--lv_label标签控件

    LVGL笔记7 lv label标签控件 lv label标签控件是LVGL中使用最频繁的控件 主要是用来显示文本信息的 可在程序运行中动态修改文本内容 支持换行显示 图标字体 部分文本重绘色 长文本显示 6种显示模式等功能 lv labe