【LVGL 学习】加入内部字体

2023-11-06

使用到的软件

LvglFontTool.exe
字符转换工具
链接:
http://www.lfly.xyz/forum.php?mod=viewthread&tid=24&extra=page%3D1

软件界面

在这里插入图片描述
按照软件界面配置

1. 打开lvgl源码中,lv_conf.h 文件,测试例程使用V7.7.0版本
在420行加入以下代码

#define LV_FONT_CUSTOM_DECLARE	  LV_FONT_DECLARE(myFont)

// LV_FONT_DECLARE(myFont) “myFont” 是对应软件界面中,请输入的字体名字一栏中的名称

在481行加入以下代码

#define LV_THEME_DEFAULT_FONT_NORMAL        &myFont //默认生成的字体文件

注意:
有四种字体显示:小,默认,副标题,标题,我们选择默认的

#define LV_THEME_DEFAULT_FONT_SMALL         &lv_font_montserrat_16	//小字体
#define LV_THEME_DEFAULT_FONT_NORMAL        &myFont				    //默认字体,我们默认使用这个
#define LV_THEME_DEFAULT_FONT_SUBTITLE      &lv_font_montserrat_16  //副标题字体
#define LV_THEME_DEFAULT_FONT_TITLE         &lv_font_montserrat_16	//标题字体

2. 将软件生成的代码,保存为 .c 文件,放入到lvgl合适工程目录下, 注意文件包含路径

/*
*---------------------------------------------------------------
*                        Lvgl Font Tool
*
* 注:使用unicode编码
* 注:本字体文件由Lvgl Font Tool V0.3 生成
* 作者:阿里(qq:617622104)
*---------------------------------------------------------------
*/



#include "../../lvgl.h"		//放入的工程目录不对可能报错,这里建议放入lvgl源文件上层目录

注意:将取出来的 .c 文件转成UTF-8,直接记事本打开另存为下面有一个可以选择为UTF-8,并且使用到的文件也要转成UTF-8才可以使用。

3. 示例代码

#pragma execution_character_set("utf-8") 	//vs2019仿真要显示中文还要加上预编译指令,否则不会显示中文

lv_obj_t* scr_1;
lv_obj_t* scr_2;

void lv_myfont(void)
{
	scr_1 = lv_scr_act();									/* 获取当前的活动屏幕 */
	lv_obj_t* labe1 = lv_label_create(scr_1, NULL);			/* 在当前活动屏幕中创建一个标签 */

	 /* 设置标签在超出所设定的范围宽度后执行的模式,6种工作模式,具体查看说明*/
	lv_label_set_long_mode(labe1, LV_LABEL_LONG_SROLL_CIRC);    
	lv_label_set_recolor(labe1, true);                      /* 失能标签字体可以重新着色,不失能的话默认黑色*/

	lv_label_set_align(labe1, LV_LABEL_ALIGN_CENTER);       /* 设置标签所在的屏幕位置 */

	/* 写入标签中的文字,文字重新着色(前提开启重新着色设置),文字超出范围后的排序由 " lv_label_set_long_mode " 函数指定 */
	/* "LV_SYMBOL_OK ..." 是LVGL自带的一些小图标 */
	lv_label_set_text(labe1, LV_SYMBOL_OK LV_SYMBOL_AUDIO "#0000ff Re-col;;or# #ff00ff words# #ff0000 of a# label "
		"and  wrap long text automatically.");

	lv_obj_set_width(labe1, 150);							 /* 设置标签的宽度,文字信息填入这个范围中 */
	lv_obj_set_height(labe1, 48);							 /* 设置标签的高度,文字信息填入这个范围中,如果文字高度大于设置的,只显示文字高度的一部分 */
	lv_obj_align(labe1, NULL, LV_ALIGN_CENTER, 0, 0);		 /* 以屏幕位中心为相对坐标(相对坐标可设置),设置标签的X Y坐标 */

	lv_obj_t* labe2 = lv_label_create(scr_1, NULL);
	lv_label_set_recolor(labe2, true);                      /* 失能标签字体可以重新着色,不失能的话默认黑色*/
	lv_label_set_long_mode(labe2, LV_LABEL_LONG_BREAK);     /*Circular scroll*/
	lv_obj_set_width(labe2, 150);
	lv_label_set_text(labe2,"#ff00ff 你好# It is a circularly scrolling text . ");
	lv_obj_align(labe2, NULL, LV_ALIGN_CENTER, 0, 30);

}

实际效果图
在这里插入图片描述

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

【LVGL 学习】加入内部字体 的相关文章

  • STM32F0、ST-link v2、OpenOCD 0.9.0:打开失败

    我在用着发射台 http www ti com ww en launchpad about htmlgcc arm none eabi 4 9 2015q2 为 STM32F0 进行编译 现在我想使用该集合中的 arm none eabi
  • HAL_Delay() 陷入无限循环

    我被 HAL Delay 函数困住了 当我调用此函数 HAL Delay 时 控制陷入无限循环 在寻找问题的过程中 我发现了这个 http www openstm32 org forumthread2145 threadId2146 htt
  • 在 ARM 处理器上执行存储在外部 SPI 闪存中的程序

    我有一个 ARM 处理器 能够与外部闪存芯片连接 写入芯片的是为 ARM 架构编译的程序 可供执行 我需要知道如何将这些数据从外部闪存获取到 ARM 处理器上以供执行 我可以提前运行某种复制例程 将数据复制到可执行内存空间吗 我想我可以 但
  • 手臂“版本”之间的差异? (仅限 ARMv7)

    基本上我想知道ARMv7l和ARMv7之间的区别hl 我有一个带有armv7l的arm处理器 并且有很多armv7的rpmhl 我完全不知道我必须搜索什么才能获得相关信息 这个 后缀 叫什么 还有其他类型吗 他们的做法有何不同 我假设它指示
  • ARM 中只有两个操作数的 ADD 或 SUB

    我正在学习ARM汇编语言 我读过 ADD 应该有 3 个操作数 然而 我见过很多案例 现实中只有两种 例如 STR R1 SP 0x20 var 1C LDR R1 a lua 0x1DE4E6 MOVS R0 R4 haystack AD
  • 读取和打印手臂组件中的字符串

    我正在使用 ARMSim 刚刚开始学习汇编 所以如果我看起来一无所知 请原谅我 但我正在尝试从输入文件中读取字符串 然后将其打印到输出屏幕 到目前为止我有 equ SWI Open 0x66 open a file equ SWI Clos
  • 源和目标具有不同的 EABI 版本

    我正在尝试使用 ARM 工具链编译 so 文件 但是我不断收到这个错误 错误 源对象的 EABI 版本为 0 但目标对象的 EABI 版本为 5 我无法更改工具链中的任何内容 因为我必须使用给定的工具链 我以前从未见过这个错误 我使用了这个
  • 当端点和 PMA 地址均更改时,CubeMX 生成的 USB HID 设备发送错误数据

    我正在调试我正在创建的复合设备的问题 并在新生成的仅 CubeMX 代码中重新创建了该问题 以使其更容易解决 我添加了少量代码main 让我发送 USB HID 鼠标点击 并在按下蓝色按钮时使 LED 闪烁 uint8 t click re
  • 如何在 Android 设备上运行 VS Code [重复]

    这个问题在这里已经有答案了 我有 Galaxy Tab S6 它具有替代笔记本电脑的很酷的功能 例如连接鼠标和键盘 但不幸的是它运行 Android 操作系统 并且没有很多开发应用程序可用于 Android 所以我想是否有一个选项可以在至少
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • 为什么 i2c_smbus 函数不可用? (I2C——嵌入式Linux)

    有很多参考使用i2c smbus 开发嵌入式 Linux 软件时在 I2C 总线上进行通信的函数 什么时候i2c smbus函数如i2c smbus read word data在软件项目中引用了 ARM8 处理器错误 例如 i2c smb
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • 使用 Android NDK 使用 -fsigned-char 进行构建安全吗?

    为了与其他平台保持一致 我需要使用signed char在我正在处理的一些本机代码中 但默认情况下在Android NDK上char类型是unsigned 我尝试明确使用signed char类型 但它生成太多警告differ in sig
  • ARM 系统调用的接口是什么?它在 Linux 内核中的何处定义?

    我读过有关 Linux 中的系统调用的内容 并且到处都给出了有关 x86 架构的描述 0x80中断和SYSENTER 但我无法追踪 ARM 架构中系统调用的文件和进程 任何人都可以帮忙吗 我知道的几个相关文件是 arch arm kerne
  • DS-5:什么是 FVP、RTSM、基础模型、AEM 模型、快速模型、CADI?

    DS 5 模拟器使用了很多术语 如 FVP RTSM 快速模型 基础模型 AEM 模型 CADI Arm的文档中提供的解释不是很清楚 这些术语的含义是什么 作为 DS 5 的最终用户我应该关心哪些术语 Model 软件模拟的行业术语 就 A
  • arm-linux-gnueabi 编译器选项

    我在用 ARM Linux gnueabi gcc在 Linux 中为 ARM 处理器编译 C 程序 但是 我不确定它编译的默认 ARM 模式是什么 例如 对于 C 代码 test c unsigned int main return 0x
  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s

随机推荐

  • Vue 项目中按需引入 ElementUI

    安装 ElementUI npm i element ui save 安装 babel plugin component npm install babel plugin component D 打开项目根目录下的 babel config
  • 智能优化算法-布谷鸟搜索算法Cuckoo Search algorithm(附Matlab代码)

    引言 布谷鸟搜索算法Cuckoo Search algorithm算法是另一种非线性元启发式算法 由Yang Xin She和Suash Deb于2009年提出在Pro ceedings of World Congress on Natur
  • RedHat 6.4启动卡在Starting certmonger

    yum groupinstall X Window System 调整 etc inittab id 5 initdefault 重启主机 一直卡在starting certmonger Ctrl Alt F2进入命令行界面是正常的 再调整
  • SpringSecurity基础教程

    SpringSecurity 目标 权限管理简介 了解 权限管理解决方案 掌握 初识Spring Security 了解 Spring Security 认证配置 重点 Spring Security 鉴权配置 重点 Spring Secu
  • OSI七层协议和TCP四层协议

    应用层 直接为用户的应用进程提供服务 如 HTTP 支持文件传输的 FTP 协议等 运输层 向两个主机中进程之间的通信提供服务 由于一个主机可同时运行多个进程 因此运输层有复用和分用的功能 复用就是多个应用层进程可同时使用下面运输层的服务
  • linux根据进程名称,查看后台任务的运行目录

    linux后台跑一堆python的时候想关闭一个程序都不知道哪个是哪个 使用ps ef也可以查看 不过内容比较多 容易误杀 所以我们改进一下 主要使用的命令有两个 pgrep 它可以列出所有这个进程名运行的进程id 比如pgrep pyth
  • HLSL Introduction

    By Chang Li High Level Shading Language HLSL a programming language for Graphic Processing Unit GPU in DirectX 9 10 11 s
  • VMware安装Linux后自动获取IP地址

    1 VMware网络连接设置为桥接模式 2 进入Linux系统 ifconfig查看IP地址信息 3 cd etc sysconfig network scripts 4 vim ifcfg eth0 5 ONBOOT yes 6 serv
  • smali文件对比java文件

    smali文件对比java文件 class 类名 super 父类 source 源文件名 implements 继承的接口 field 类成员变量 method 类方法 parameter 函数参数 p1 p2 locals x 局部变量
  • 活动目录服务详细操作

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有收获 但一定会有收获加油 一起努力 共赴美好人生 夕阳下 是最美的绽放 树高千尺 落叶归根人生不易 人间真情 目录 第一章 Active Directory与
  • 技术赋能水务数字化转型,上海市水旱灾害防御技术中心领导一行调研上海控安

    NEWS 3月1日下午 上海市水旱灾害防御技术中心主任张鹏一行莅临上海控安 对双方联合实验室建设及公司智慧水务板块业务进行调研指导 并就助力上海城市水务高质量发展及数字化转型相关工作展开交流讨论 上海控安总经理蒲戈光 首席信息官杨昆等平台公
  • 【旅行商问题】蚁群算法解决旅行商问题【Matlab】

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 旅行商问题 1 问题描述 2 数学模型 二 蚁群算法 1 引言 2 蚁群算法求解TSP原理 三 源代码 四 结果展示 五 备注 一 旅行商问题 1 问题描述 旅
  • 彻底卸载VMware虚拟机

    开始 gt 运行 gt regedit gt 找到HKEY LOCAL MACHINE gt Software gt VMware inc 把这个整个删除 关闭注册表后 重新运行VMware的安装文件 问题即可解决
  • 前端基础面试题(js、vue、react)

    文章目录 vue2面试题 js面试题 react面试题 vue2面试题 vue的双向绑定原理 双向绑定的原理也叫响应式原理 Vue它是采用数据劫持结合发布者 订阅者模式的方式 通过Object defineProperty 属性的sette
  • 【Redis】Centos7 如何正确的手动安装Redis,简单式安装

    安装包 手动官网下载 redis 4 0 1 tar gz 演示redis的版本 使用wget下载 centos 自带了wget wget http download redis io releases redis 4 0 1 tar gz
  • Acwing-870. 约数个数

    N的任何一个约数都是d的形式 而且d每一项的指数都不同 所以N的约数与 1 k的取法是一致的 N的每一个约数都对应了 1 k的一种取法 不同的取法对应不同的约数 由算数基本定理 每一个数的因式分解是唯一的 只要因式分解不一样 那么这两个数就
  • MySQL内置函数ifnull()

    ifnull mysql的一个内置函数 用于处理空值 NULL 如果不为 NULL ifnull 函数会返回第一个参数 否则返回第二个参数 例子 select ifnull select salary from Employee order
  • H5页面唤起关注公众号页面

    一 H5页面唤起关注公众号页面 上面已经说明如何判断用户是否已经关注公众号 那如何唤起关注页面 也就是如何跳转到关注页面引导用户关注呢 主要分为以下几个步骤 1 登录微信公众平台 2 点击微信号头像右击查看源代码 3 找到源代码中以下代码
  • 二极管详解

    一 基本概念 二极管由管芯 管壳和两个电极构成 管芯就是一个PN结 在PN结的两端各引出一个引线 并用塑料 玻璃或金属材料作为封装外壳 就构成了晶体二极管 如下图所示 P区的引出电极称为正极或阳极 N区引出的电极称为负极或阴极 1 二极管的
  • 【LVGL 学习】加入内部字体

    使用到的软件 LvglFontTool exe 字符转换工具 链接 http www lfly xyz forum php mod viewthread tid 24 extra page 3D1 软件界面 按照软件界面配置 1 打开lvg