【LVGL 学习】加入内部字体

使用到的软件

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);

}

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值