esp32-s3添加myFont.c,并在主函数调用lv_font_get_glyph_bitmap,举例
时间: 2024-05-15 11:13:25 浏览: 160
好的,我来给你举个例子。
假设我们已经有了一个包含字形数据的 myFont.c 文件,我们需要将其添加到 ESP32-S3 项目中。可以将该文件放置在项目根目录下的 components 文件夹中,然后在 CMakeLists.txt 文件中添加以下内容:
```
idf_component_register(SRCS "myFont.c"
INCLUDE_DIRS "")
```
这样就可以在项目中使用 myFont 字体了。
接下来,在主函数中调用 `lv_font_get_glyph_bitmap` 函数,实现绘制字形。下面是一个简单的例子:
```c
#include "lvgl/lvgl.h"
#include "myFont.h"
int main(void)
{
// 初始化 LVGL
lv_init();
// 创建屏幕对象
lv_obj_t * scr = lv_disp_get_scr_act(NULL);
// 创建标签对象
lv_obj_t * label = lv_label_create(scr, NULL);
// 设置标签文字
lv_label_set_text(label, "Hello, world!");
// 设置字体
lv_font_t * font = &myFont; // 使用 myFont 字体
lv_label_set_style(label, LV_LABEL_STYLE_MAIN, font);
// 获取字形数据
const lv_font_glyph_dsc_t * glyph_dsc = lv_font_get_glyph_dsc(font, 'H');
const uint8_t * bitmap = lv_font_get_glyph_bitmap(font, glyph_dsc);
// 绘制字形
lv_area_t area = {50, 50, glyph_dsc->w_px, glyph_dsc->h_px};
lv_draw_label_dsc_t label_dsc;
label_dsc.font = font;
label_dsc.color = LV_COLOR_RED;
lv_draw_bitmap(bitmap, &area, &label_dsc);
// 运行 LVGL
while(1) {
lv_task_handler();
}
return 0;
}
```
这段代码创建了一个标签对象,并将其设置为使用 myFont 字体。然后,通过 `lv_font_get_glyph_dsc` 和 `lv_font_get_glyph_bitmap` 函数获取字形数据,并使用 `lv_draw_bitmap` 函数绘制字形。最后,进入 LVGL 运行循环,等待事件的发生。
阅读全文