本文主要是介绍ESP32 OLED LVGL 显示常用中文字符,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、环境
此例子基于esp-idf-5.0 ,大家想办法自己搭建吧,或者可以参考一下我的搭建环境
二、步骤
- 基于 example ,位置:esp-idf-5.0examplesperipheralslcdi2c_oled
- 参考 百问网 的LVGL教程,可以拿到思源字体 文档: 视频教程:
- 导出字体
- 我这里取巧了一下,直接用 lv_font_simsun_16_cjk 这个名字,替代原有的中文字库,这样就不用做什么大改动了
- 这里注意了 ,最好先在menuconfig里面配置好所有东西,否则改动了配置的话,会出现下面的错误,意思就是,如果要重新运行CMake,必须用没有修改过的component,除非我们将这个修改保留到新的component里面去,我懒得修改了,所以这里可以先配置好工程,再重来一遍(一切都是懒…)
- 直接打开 i2c_oledmanaged_componentslvgl__lvglsrcfontlv_font_simsun_16_cjk.c,将我们刚刚生出的文件,复制过去
- 头部有一点不同,需要稍做修改,然后余下的都一样了,不需要处理 /******************************************************************************* * Size: 16 px * Bpp: 1 * Opts: ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE #include "lvgl.h" #else #include "../../lvgl.h" #endif #ifndef LV_FONT_SIMSUN_16_CJK #define LV_FONT_SIMSUN_16_CJK 1 #endif
- 打开一下这个中文字体的宏i2c_oledmanaged_componentslvgl__lvglsrclv_conf_internal.h
- 愉快编译,下面放一下我的测试代码,新建一个风格,使用这个字体
```cpp
static lv_style_t label_shadow_style1; // 创建一个风格
lv_style_init(&label_shadow_style1); // 初始化风格
lv_style_set_text_font(&label_shadow_style1, &lv_font_simsun_16_cjk);
lv_obj_t * Label3 = lv_label_create(scr); // 在主屏幕创建一个标签
lv_label_set_long_mode(Label3, LV_LABEL_LONG_DOT); // 标签长内容框,保持控件宽度,内容过长就换行
lv_obj_set_width(Label3, 64); // 设置标签宽度
lv_label_set_recolor(Label3, true); // 使能字符命令重新对字符上色
lv_label_set_text(Label3, "测试中文字体"); // 设置显示文本
lv_obj_align(Label3, LV_ALIGN_CENTER, 0, 0); // 对齐到中心偏下
lv_obj_add_style(Label3, &label_shadow_style1, 0); // 应用效果风格
```
三、测试结果
这篇关于ESP32 OLED LVGL 显示常用中文字符的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!