【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” 是对应软件界面中,请输入的字体名字一栏中的名称
1
2
3
在481行加入以下代码
#define LV_THEME_DEFAULT_FONT_NORMAL        &myFont //默认生成的字体文件
1
注意:
有四种字体显示:小,默认,副标题,标题,我们选择默认的
#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	//标题字体
1
2
3
4
2. 将软件生成的代码,保存为 .c 文件,放入到lvgl合适工程目录下, 注意文件包含路径
/*
*---------------------------------------------------------------
*                        Lvgl Font Tool
*
* 注:使用unicode编码
* 注:本字体文件由Lvgl Font Tool V0.3 生成
* 作者:阿里(qq:617622104)
*---------------------------------------------------------------
*/
#include "../../lvgl.h"		//放入的工程目录不对可能报错,这里建议放入lvgl源文件上层目录
1
2
3
4
5
6
7
8
9
10
11
12
13
注意:将取出来的 .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);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
实际效果图

————————————————
                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/shileiwu0505/article/details/120954582
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号