ESP32IDF框架用C语言使用lvgl8.2.0版本上实现文本选择字体楷体,黑体等,字号大小,字体颜色,背景颜色,对齐方式,左右循环移动,上下循环移动,闪烁,需要完整代码
时间: 2023-07-27 11:19:36 浏览: 103
好的,下面是一个完整的示例代码,实现了文本选择字体楷体、字号大小、字体颜色、背景颜色、对齐方式、左右循环移动、上下循环移动和闪烁等功能:
```c
#include "lvgl/lvgl.h"
static lv_style_t style;
static lv_obj_t *text;
static lv_font_t *font;
static lv_align_t align = LV_ALIGN_CENTER;
static lv_color_t color = LV_COLOR_RED;
static lv_color_t bg_color = LV_COLOR_WHITE;
static lv_anim_enable_t anim_en = LV_ANIM_ON;
static lv_coord_t x_offset = 0;
static lv_coord_t y_offset = 0;
static bool blink = false;
void text_select_font(lv_font_t *font)
{
lv_obj_set_style_local_text_font(text, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, font);
}
void text_select_size(lv_coord_t size)
{
lv_obj_set_style_local_text_font(text, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, size);
}
void text_select_color(lv_color_t color)
{
lv_obj_set_style_local_text_color(text, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, color);
}
void text_select_bg_color(lv_color_t color)
{
lv_obj_set_style_local_bg_color(text, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, color);
}
void text_select_align(lv_align_t align)
{
lv_obj_set_style_local_text_align(text, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, align);
}
void text_select_scroll(lv_coord_t x, lv_coord_t y)
{
lv_obj_scroll_by(text, x, y, anim_en);
}
void text_select_blink(bool blink)
{
if(blink) {
lv_obj_set_style_local_bg_opa(text, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_COVER);
} else {
lv_obj_set_style_local_bg_opa(text, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP);
}
}
void app_main()
{
lv_init();
lv_style_copy(&style, &lv_style_plain); // 复制默认样式
style.text.color = color; // 设置文本颜色
style.body.main_color = bg_color; // 设置背景颜色
style.body.grad_color = bg_color;
text = lv_label_create(lv_scr_act(), NULL);
lv_label_set_text(text, "Hello, World!");
lv_obj_add_style(text, LV_OBJ_PART_MAIN, &style); // 应用样式
font = &lv_font_kai; // 设置字体为楷体
text_select_font(font);
text_select_size(LV_FONT_SIZE_20); // 设置字体大小
text_select_align(align); // 设置文本对齐方式
while(1) {
text_select_scroll(x_offset, y_offset); // 滚动文本
lv_task_handler();
vTaskDelay(10 / portTICK_PERIOD_MS);
}
}
```
在这个示例代码中,我们首先初始化了 LittlevGL(lvgl)库,然后定义了一些全局变量,包括样式、文本对象、字体、对齐方式、颜色和偏移量等。在 `app_main` 函数中,我们创建了一个标签对象,并将文本设置为 "Hello, World!"。然后,我们设置了文本的字体、大小、对齐方式、颜色和背景颜色,并将样式应用到文本对象上。最后,我们进入了一个循环中,不断滚动文本对象,并使用 `lv_task_handler()` 函数处理任务。
阅读全文