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,一经查实,立即删除!

相关文章

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

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

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

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

VS2022打开.netcore2.2 问题解决

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

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

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

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

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

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

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)是面向对象编程中的一个核心概念,它…

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

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

在Python项目中自定义日志工具

在Python项目中自定义日志工具 日志记录是软件开发中的一个关键部分,它可以帮助开发人员调试代码、监控运行状况以及记录重要事件。在Python中,logging 模块提供了强大的日志记录功能。本文将介绍如何创建一个日志工具,使其能够同时将日志输…

【ajax基础02】URL详解

目录 一:什么是URL 二:URL组成 协议 ​编辑 域名(在url中必须写) 资源路径 三:URL查询参数 定义: 语法格式: 如何利用axios实现特定数据查询: 语法格式: 案例&#xff1a…

【耐水好】强耐水UV胶水它的粘接强度和普通UV胶水比如何呢

【耐水好】强耐水UV胶水它的粘接强度和普通UV胶水比如何呢 强耐水UV胶水的粘接强度与普通UV胶水相比,具有显著的优势。以下是详细的比较和归纳: 固化方式: 两者都是通过紫外线(UV)照射进行固化,但强耐水UV…

2024年全球架构师峰会(ArchSummit深圳站)

前言 ArchSummit全球架构师峰会是极客邦科技旗下InfoQ中国团队推出的重点面向高端技术管理者、架构师的技术会议,54%参会者拥有8年以上工作经验。 ArchSummit聚焦业界强大的技术成果,秉承“实践第一、案例为主”的原则,展示先进技术在行业中的…

程序员学CFA——经济学(三)

经济学(三) 总产出、价格水平和经济增长总产出、总收入和总支出总产出、总收入和总支出的概念及联系国内生产总值国内生产总值(GDP)的定义GDP的衡量方法GDP的相关概念GDP的核算方法 总需求、总供给和市场均衡总需求总需求及其假设…

Netty中Reactor线程的运行逻辑

Netty中的Reactor线程主要干三件事情: 轮询注册在Reactor上的所有Channel感兴趣的IO就绪事件。 处理Channel上的IO就绪事件。 执行Netty中的异步任务。 正是这三个部分组成了Reactor的运行框架,那么我们现在来看下这个运行框架具体是怎么运转的~~ 这…

设计模式-结构型-06-桥接模式

1、传统方式解决手机操作问题 现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图: UML 类图 问题分析 扩展性问题(类爆炸):如果我们再…

Zygote进程的理解

Zygote进程是安卓系统的一个重要进程,由init进程创建而来;另外系统里的重要进程(system_server等)都是由zygote进程fork的,所有的app进程也是由zygote进程fork的。 一、C 里的fork函数 fork是Linux里面创建子进程的函…

电池荷电状态估计SOC?电池管理系统

一、背景 电池荷电状态(SOC, State of Charge)估计是电池管理系统(BMS, Battery Management System)的关键功能之一,对于确保电池的安全高效运行至关重要,特别是在电动车、储能系统以及便携式电子设备等领…

LCL滤波器并网逆变器双闭环控制系统仿真

并网逆变器通常采用L滤波器,虽然结构和控制简单,但是随着功率级别的增加,体积重量增大等问题也日益突出。为了解决这个问题,人们开始使用LCL滤波器,这种滤波器在功率较大的场合表现出色。 无源滤波器,又称…