esp32-s3 LVGL添加新字体,详细教程,并举例
时间: 2024-05-04 17:21:11 浏览: 274
LVGL移植到ESP32官方示例(lv_port_esp32)
添加新字体到ESP32-S3上使用LVGL库可以分为以下几个步骤:
1. 准备字体文件
首先要准备字体文件,常见的字体格式有ttf、otf、woff等。在这里我们以ttf格式为例,假设我们要添加的字体文件名为"myfont.ttf"。
2. 转换字体文件
ESP32-S3上使用的字体文件需要是一种特殊的格式,即“LVGL font format”,因此需要将ttf格式的字体文件转换为该格式。可以使用“lv_font_conv”工具进行转换。
首先需要安装该工具,可以使用以下命令:
```
pip3 install lv_font_conv
```
然后使用以下命令将ttf格式的字体文件转换为LVGL font format:
```
lv_font_conv --size 16 --format lvgl --bpp 4 myfont.ttf myfont.bin
```
其中,--size指定字体大小,--format指定输出格式,--bpp指定每个像素使用的位数。输出文件为"myfont.bin"。
3. 添加字体数据到代码中
将转换后的字体文件数据添加到代码中,可以使用以下代码:
```
#include "myfont.bin.h" // 包含字体数据文件
...
lv_font_t *font = lv_font_create(lv_mem_alloc(sizeof(lv_font_t)), &myfont); // 创建字体对象
```
其中,myfont.bin.h为使用lv_font_conv工具生成的字体数据文件的头文件。
4. 使用新字体
将字体对象应用到需要使用该字体的控件上即可,例如:
```
lv_obj_t *label = lv_label_create(lv_scr_act(), NULL); // 创建标签控件
lv_label_set_text(label, "Hello LVGL!"); // 设置文本
lv_obj_set_style_local_text_font(label, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, font); // 应用新字体
```
这样就完成了添加新字体的过程。
举个例子,假设我们要添加的字体文件是"msyh.ttf",大小为20,可以使用以下代码完成添加新字体的过程:
```
#include "msyh.bin.h" // 包含字体数据文件
...
void add_new_font() {
lv_font_t *font = lv_font_create(lv_mem_alloc(sizeof(lv_font_t)), &msyh); // 创建字体对象
lv_obj_t *label = lv_label_create(lv_scr_act(), NULL); // 创建标签控件
lv_label_set_text(label, "新字体测试"); // 设置文本
lv_obj_set_style_local_text_font(label, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, font); // 应用新字体
}
```
这样就完成了添加新字体的过程。
阅读全文