LVGL开发教程-Label文本

news2024/11/17 11:39:20

系列文章目录

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


目录

系列文章目录

文章目录

前言

​编辑

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.coloradmin.cn/o/1839210.html

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

相关文章

华润的超市卡有什么用?

现在都很少有人会直接去超市买东西了,一般都是网购或者叫外卖啥的 最近我朋友送了张华润的礼品卡,但是感觉也没什么要买的 一边担心卡过期,一边发愁买什么 还好发现了收卡云啊,最后把卡在收卡云上卖掉了,到账速度贼…

org.springframework.boot:spring-boot-starter-parent:pom:2.3.4.RELEAS

前言 git上拉了一个项目构建过程中无论是clean还是install都报错 注:很看不惯某博主一点简单的经验分享都要开VIP才能查看的作风 org.springframework.boot:spring-boot-starter-parent:pom:2.3.4.RELEASE failed to transfer from https://maven.aliyun.com/rep…

免费的ai创作软件,各维度的盘点一下!

随着科技的飞速发展,人工智能(AI)已经渗透到我们生活的方方面面,其中就包括内容创作领域。近年来,越来越多的免费AI创作软件涌现出来,为广大创作者提供了全新的创作方式和工具。那么,这些软件究…

C语言——扫雷小游戏

扫雷小游戏: 游戏最终效果: 1.先写一下游戏开始的简单界面。 用一个函数来写一下 void menu() {printf(" ---------------------------- \n");printf("| 1.play |\n");printf("| 0.exit …

工业 web4.0,UI 风格令人赞叹

工业 web4.0,UI 风格令人赞叹

揭秘后勤报修管理系统:目的明确,功能设计模块助您轻松管理

在数字化、信息化飞速发展的今天,企业后勤报修也迎来了前所未有的变革。传统的报修方式,如电话报修、纸质报修单等,已逐渐无法满足现代企事业单位对高效、便捷、精准报修服务的需求。因此,后勤报修管理系统应运而生,后…

ThinkPHP5大学生社会实践管理系统

有需要请加文章底部Q哦 可远程调试 ThinkPHP5大学生社会实践管理系统 一 介绍 大学生社会实践管理系统基于ThinkPHP5框架开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈:ThinkPHP5mysqlbootstrapphpstudyvscode 二 功…

Upload-Labs:Pass - 1(JS前端白名单)

Pass_1 1. 上传测试2. 代码审计**获取文件输入的值**:**检查是否选择了文件**:**定义允许的文件类型**:**提取文件的扩展名**:**检查文件类型是否允许上传**:**构建错误消息并提醒用户**: 3.绕过思路3.1 将…

2024-06-19,面试官问的问题

文章目录 1、采用minIO完成了图片存储,采用阿里云OSS服务器存储图片这两个功能面试官理解为重复,面试官又问minIO怎么同步到OSS?2、讲一下ThreadLocal?3、为什么用ThreadLocal存数据?4、redis有几种数据结构&#xff1…

18V-120V降12V300m恒压WT5117

18V-120V降12V300m恒压WT5117 WT5117 是一款专为开关电源设计的集成了 150V 高电压 MOSFET 的 DC-DC 控制器。这个设备具备内置高压启动和自供电功能,能够满足快速启动及低能耗待机状态的需求。 WT5117 配备了自适应降频技术,以提升在低负载条件下的转换…

构建高效、便捷的家校沟通桥梁

在现代教育中,家校之间的有效沟通和协作是确保学生全面发展的关键。搭贝家校管理应用通过一系列强大而便捷的功能,帮助学校和家长实现无缝对接,提供全面的管理和服务。以下是搭贝家校管理应用的主要功能和优势。 🏫 主要功能模…

资源宝库网站!人人必备的神器!

面对网络中海量的内容,一个高效、便捷的网络导航工具,可以帮助我们快速查找使用网络资源。无论是职场精英还是学生党,使用导航网站都可以帮助我们提升效率。下面小编就来和大家分享一款资源宝库网站-办公人导航-实用的办公生活导航网站&#…

docker-compose设置永久启动、自动重启

步骤一 找到 docker-compose.yml 文件 步骤二 vim 打开文件 找到 image: PS:就是为了对齐格式 步骤三 在其下方添加: restart: always而后保存即可

Apple Watch设计原则,让你开发app思路更清晰

Apple Watch 作为一款极具前瞻性的产品,硬件已经发展到 Apple Watch Series 6。智能手表是目前除了手机之外, 最方便人眼观看且较为成熟的商业化硬件。这次加速器活动带给我的触动很大,原以为 Apple Watch 只是一款小众产品,实际上…

在 Visual Studio 2022 中使用命令删除 GitHub 的本地分支可以通过以下步骤完成

打开终端窗口: 在 Visual Studio 2022 中,打开你的项目或者代码库。 打开 “View” 菜单,然后选择 “Terminal” 打开终端窗口。 查看当前分支: 在终端窗口中输入以下命令,查看当前的本地分支列表: 复制代码 git branch 这会列出…

防爆气象站:化工厂区气象环境监测的最佳选择

在化工厂区,气象环境监测至关重要,它直接关系到生产安全、环境保护以及员工健康。防爆气象站作为专业的监测设备,凭借其独特的防爆性能和精准的数据监测能力,成为化工厂区气象环境监测的最佳选择。 防爆气象站采用先进的防爆技术…

CityEngine记录1:工程目录

CityEngine的工程目录结构对于理解和组织3D城市建模项目至关重要。以下是对CityEngine工程目录结构的详细解析: Assets: 存放模型的零件与纹理图片。这些资产通常用于在建模过程中为建筑物、道路、植被等元素添加详细的纹理和细节。 Data: …

Linux内核编程(六)平台总线plantform驱动模型

本文目录 前述:为什么引入平台总线模型一、知识点1. 什么是平台总线模型2. 平台总线模型使用3. 平台总线是如何工作的4. 平台总线模型的优点 二、平台总线设备层1. 常用API(1) 注册一个平台设备(2) 注销一个平台设备&a…

专业和学校到底怎么选,兴趣和知名度到底哪个重要?

前言 2024高考已经落下帷幕,再过不久就到了激动人心的查分和填报志愿的时刻,在那天到来,小伙伴们就要根据自己的分数选取院校和专业,接下来我就以参加22年(破防年)河南高考的大二生来讲述一下我自己对于如何选取院校和专业的看法以…

Attention Is All You Need详解

一.背景。 在此模型之前,序列到序列的任务(如机器翻译、文本摘要等)通常采用循环神经网络(RNN)或卷积神经网络(CNN)。然而,RNN 在处理长距离依赖时存在一定的局限性(举个…