LVGL开发教程-Label文本

系列文章目录

知不足而奋进 望远山而前行


目录

系列文章目录

文章目录

前言

​编辑

1. 文本显示

2. 使用字体

总结


前言

在嵌入式系统开发中,文本显示是一项基本而重要的功能。使用 LittlevGL(LVGL)库,我们可以轻松地创建并控制文本标签(Label),实现各种效果,如文本滚动、自定义字体等。本文将介绍如何利用 LVGL 实现文本标签的创建、文本设置、样式定义以及特殊效果如长文本滚动。


1. 文本显示

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

创建Label对象:

lv_obj_t * lv_label_create(lv_obj_t * parent)

参数可以指定lv_scr_act()会自动显示在图层上

设置文本内容:

void lv_label_set_text(lv_obj_t * obj, const char * text)

设置Label的宽度高度及位置:

//设置的方式通objects的设置

代码实现:

void first_screen(){lv_obj_t* label = lv_label_create(lv_scr_act());lv_obj_set_size(label,100,80);lv_obj_set_align(label,LV_ALIGN_CENTER);lv_label_set_text(label,"Hello itheima");
}

设置长文本滚动显示, 当文本太长之后, 就可以滚动显示文字,就像广告牌上面那样.

LV_FONT_DECLARE(alimama30);static lv_style_t style1;
lv_style_init(&style1);
lv_style_set_text_font(&style1, &alimama30);
lv_style_set_text_color(&style1, lv_palette_main(LV_PALETTE_BLUE_GREY));lv_obj_t* label = lv_label_create(root);
lv_obj_add_style(label,&style1,0);
lv_obj_set_pos(label,0,10);
lv_label_set_text(label,"抒写秋季爱意");
lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR);
lv_obj_set_width(label,230);

注意:若中文字体配置没有问题,始终无法显示出中文,请检查当前.c文件编码格式是否为UTF-8

注意:若中文字体配置没有问题,始终无法显示出中文,请检查当前.c文件编码格式是否为UTF-8

注意:若中文字体配置没有问题,始终无法显示出中文,请检查当前.c文件编码格式是否为UTF-8

2. 使用字体

在lvgl中, 自带有一些大小的字体, 这些字体只支持英文,不支持中文. 打开lv_conf.h 可以看到字体相关的配置

#define LV_FONT_MONTSERRAT_8  1
#define LV_FONT_MONTSERRAT_10 1
#define LV_FONT_MONTSERRAT_12 1
#define LV_FONT_MONTSERRAT_14 1
#define LV_FONT_MONTSERRAT_16 1
#define LV_FONT_MONTSERRAT_18 1
#define LV_FONT_MONTSERRAT_20 1
#define LV_FONT_MONTSERRAT_22 1
#define LV_FONT_MONTSERRAT_24 1
#define LV_FONT_MONTSERRAT_26 1
#define LV_FONT_MONTSERRAT_28 1
#define LV_FONT_MONTSERRAT_30 1
#define LV_FONT_MONTSERRAT_32 1
#define LV_FONT_MONTSERRAT_34 1
#define LV_FONT_MONTSERRAT_36 1
#define LV_FONT_MONTSERRAT_38 1
#define LV_FONT_MONTSERRAT_40 1
#define LV_FONT_MONTSERRAT_42 1
#define LV_FONT_MONTSERRAT_44 1
#define LV_FONT_MONTSERRAT_46 1
#define LV_FONT_MONTSERRAT_48 1

如果我们想用这些字体的话,只需要在样式中指定这些宏定义的小写格式就可以了.

lv_style_set_text_font(&style1,&lv_font_montserrat_48);

由于lvgl自带的库不支持中文, 若想显示中文,我们就需要创建自己的字体库. 按照如下3个步骤,我们可以快速创建自己的字体库

  1. 准备好字体库 .ttf 或者.woff格式的字体(这个可以从网上找到)
  2. 打开网站Font Converter — LVGL

  1. 将生成的字库c文件拷贝到工程中
  2. 在要用到的地方调用 LV_FONT_DECLARE(alimama30);
  3. 在代码中写上
lv_style_set_text_font(&style1, &alimama30);

总结

本文详细讲解了如何利用 LVGL 库在嵌入式设备上实现文本标签的创建和定制化显示。首先,我们学习了如何创建 Label 对象并设置其基本属性,如文本内容、大小和位置。接着,通过样式定义,我们展示了如何修改文本的字体和颜色,以及如何使用 LVGL 提供的自定义字体。最后,我们介绍了如何实现长文本滚动显示,通过设置 LV_LABEL_LONG_SCROLL_CIRCULAR 模式来达到类似广告牌效果。

通过这些步骤,开发者可以在嵌入式系统中高效地实现各种文本显示需求,为用户提供更加丰富和可定制的用户界面体验。

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

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

相关文章

程序人生 - iPhone 关机后,华为手表非凡大师居然还可以正常微信支付?

昨天,地铁上手机没电了,当时还担心出闸门和买晚饭的问题,虽然手表已经开通了 NFC 微信支付,但是我一开始的理解需要手机保持蓝牙开启的前提下才能正常使用,毕竟有时候手机离开手表,手表就会提示断线了。 但…

bms SRP引脚什么意思

SRP引脚通常是指电池管理系统(BMS)或相关电子设备中的一个专用引脚,它代表“Sense Resistor Positive”(正采样电阻),用于电流检测和电流感测功能。在电池充放电过程中,通过监测连接到SRP引脚的…

Linux应急响应:清理系统日志后的日志恢复与分析

在系统安全事件的响应中,攻击者清理日志的行为给追踪和分析带来了巨大挑战。本文将介绍在日志被清理后,如何利用Linux的systemd-journald服务进行日志恢复与分析,以及如何通过GScan工具进行自动化后门排查。 系统日志的重要性 系统日志是安…

lspci总结

lspci总结 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨一个在 Linux 系统中常用的命令:lspci。lspci 命令用于列出当前系统中的 P…

Folx Mac版软件下载-Folx 2024最新版-下载工具附加详细安装步骤

​根据大数据调查表明从网络下载视频:用Folx从网页上下载视频,能够设置下载视频的格式,你也能够下载年龄限制和私人视频,当你不需要视频,只想要一个音轨的时候,Folx是非常有用的!这个互联网下载器所有的视频…

微服务该如何划分?

微服务的划分应考虑业务逻辑、服务粒度、团队规模等因素。合理的微服务划分可以带来系统的可维护性、可扩展性和独立性,从而提高整体研发效率和系统稳定性。在现代软件架构中,微服务划分已成为确保系统灵活性和高效性的重要步骤。以下是微服务如何划分的…

java智慧工地系统源码 智慧工地标准之一:环境监测 告别灰头土脸、智慧工地环境监测系统都包括哪些功能?

java智慧工地系统源码 智慧工地标准之一:环境监测 告别灰头土脸、智慧工地环境监测系统都包括哪些功能? 智慧工地环境监测系统是一套集成了物联网、大数据和云计算技术的系统,主要用于实时监测和管理建筑工地的环境状况。以下是该系统的一些核…

VS2022打开.netcore2.2 问题解决

1.vs2022运行时一直提示异常 2.解决方法,双击当前的项目修改xxxx.csproj文件 把当前的版本修改为2.2.0即可重新编译运行

oracle将字符串中的字符和数字拆分开等功能

将字符串中的字符和数字拆分开 create or replace procedure F_GetNumber1( inString IN VARCHAR2,n_return1 out varchar2, n_return2 out varchar2) ISDCHAR VARCHAR2(1024); OUTCHAR VARCHAR2(1024); j number default 0; ulen number; BEGINOUTCHAR:;DCHAR:TRIM(inStr…

山东大学面向对象技术——设计原则、工厂模式、单例模式

目录 前言 设计模式和原则作用 面向对象的设计原则 开闭原则OCP: Open-Closed Principle 题目举例 里氏代换原则LSP: Liskov Subtitution 依赖倒置原则DIP: Dependency Inversion Principle 接口隔离原则ISP: Interface Segregation Principle 组合优先原则CRP: Compo…

vue+webpack子应用嵌入乾坤框架

首先!不建议用vite,改了两天,无果。 乾坤本就不支持vite,后续要改插件改配置追加前缀,乾坤只能挂载基础节点,但是静态资源以及接口都挂载不上,或许有实现办法,但时间节点很紧&#…

【AI学习】LLaMA 系列模型的进化(一)

一直对LLaMA 名下的各个模型关系搞不清楚,什么羊驼、考拉的,不知所以。幸好看到两篇综述,有个大致了解,以及SEBASTIAN RASCHKA对LLaMa 3的介绍。做一个记录。 一、文章《Large Language Models: A Survey》中对LLaMa的介绍 论文…

❤【纯干货】Matplotlib总结,任何项目都用得到❤

. . . . . . . . . . . 纯 干 货 . . . . . . . . .Matplotlib 在很多人眼里是无敌的存在,而且可以说是无敌的存在。 走过数据科学的路,路上必然有Matplotlib 的风景在你周围。 如果同一个项目,你的用了matplotlib …

vue脚手架 笔记08

目录 01 vuex的四大辅助函数的使用 mapState使用方式: mapMutations的使用方式: mapGetters的使用方式: mapActions的使用方式: 02 vuex中的模块化 vuex的modules模块化的使用: modules模块化的使用: 01 vuex的四大辅助函数的使用 帮助我们把vuex里面的数据映射到当前组件里…

资料合集|SmartX 虚拟化特性解读、迁移实践与用户案例

面对 VMware 的种种变动,不少用户开始探索新的出路。但对于虚拟化平台这一核心组件的替换,一些用户仍处于观望状态,主要是出于以下担忧: 新的虚拟化平台是否具备与 VMware 虚拟化相当的能力?替代 VMware 虚拟化平台涉…

【微服务网关——负载均衡】

1. 四大负载均衡策略 随机负载 随机挑选目标服务器IP 轮询负载 ABC三台服务器,ABCABC依次轮询 加权负载 给目标设置访问权重,按照权重轮询 一致性hash负载 请求固定URL访问指定IP 2.随机负载均衡 可以通过random函数来随机选择一个ip 2.1 代码实现 …

陶建辉入选 2023 年度“中国物联网行业卓越人物榜”

在这个技术飞速发展的时代,物联网行业作为推动社会进步的重要力量,正在不断地演化和革新。近日,中国智联网生态大会暨“2023 物联之星”年度榜单颁奖典礼在上海浦东举行。现场公布了拥有物联网行业奥斯卡奖之称的 ——“物联之星 2023 中国物…

「51媒体」上海电视台媒体邀约专访怎么做?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 电视台专访通常会对一些热门话题,行业热点,或者新闻焦点,邀请嘉宾进行访谈。企业如果想要在电视台进行专访,通常要有合适的时机和选题。 下…

【面试干货】Java方法重写的规则

【面试干货】Java方法重写的规则 1、Java方法重写的规则2、示例代码3、总结 💖The Begin💖点点关注,收藏不迷路💖 在Java中,方法重写(Overriding)是面向对象编程中的一个核心概念,它…

结硬寨:联想服务器的向前之路

曾国藩曾经将自己的战略思想,总结为“结硬寨,打呆仗”。 这种稳健的策略,往往在真实的产业发展中能收获奇效。我们喜欢听颠覆性的产业创新,却往往忽视稳扎稳打,把每一个优势聚集起来形成整体优势,可能才是市…