LVGL部件6

一.圆弧部件

1.知识概览

LVGL部件6_第1张图片

LVGL部件6_第2张图片

LVGL部件6_第3张图片

2.函数接口

1.lv_obj_clear_flag

在 LVGL(LittlevGL)中,lv_obj_clear_flag 函数用于清除对象的特定标志位。该函数的原型如下:

void lv_obj_clear_flag(lv_obj_t * obj, lv_obj_flag_t flag);
  • obj 是指向要操作的对象的指针。
  • flag 是要清除的标志位,可以是以下之一或其组合:
    • LV_OBJ_FLAG_HIDDEN: 隐藏标志位,表示对象被隐藏。
    • LV_OBJ_FLAG_CLICKABLE: 可点击标志位,表示对象可以接收点击事件。
    • LV_OBJ_FLAG_SCROLLABLE: 可滚动标志位,表示对象可以滚动。
    • LV_OBJ_FLAG_DISABLED: 禁用标志位,表示对象被禁用。

以下是一个示例代码,展示如何使用 lv_obj_clear_flag 函数清除对象的标志位:

// 创建一个按钮
lv_obj_t *button = lv_btn_create(lv_scr_act(), NULL);

// 设置按钮为禁用状态
lv_obj_add_flag(button, LV_OBJ_FLAG_DISABLED);

// 清除按钮的禁用标志位
lv_obj_clear_flag(button, LV_OBJ_FLAG_DISABLED);

我们创建了一个按钮对象 button,使用 lv_obj_add_flag 函数将按钮设置为禁用状态,然后使用 lv_obj_clear_flag 函数清除按钮的禁用标志位,恢复按钮为可用状态。

2.lv_obj_remove_style

在 LVGL(LittlevGL)中,要从对象上移除特定样式,可以使用lv_obj_remove_style函数。该函数的原型如下:

void lv_obj_remove_style(lv_obj_t * obj, uint32_t part, uint32_t state);
  • obj 是指向要操作的对象的指针。
  • part 是要移除样式的对象部分。可以使用预定义的常量,如 LV_OBJ_PART_MAIN 表示主要部分,或者使用 LV_PART_CUSTOM 自定义部分。
  • state 是要移除样式的状态。可以使用预定义的常量,如 LV_STATE_DEFAULT 表示默认状态,或者使用自定义状态。

以下是一个示例代码,展示如何使用 lv_obj_remove_style 函数从对象上移除样式:

// 创建一个按钮
lv_obj_t *button = lv_btn_create(lv_scr_act(), NULL);

// 为按钮添加一个样式
lv_btn_set_style(button, LV_BTN_STYLE_REL, &lv_style_btn_rel);

// 移除按钮的 REL 样式
lv_obj_remove_style(button, LV_BTN_PART_MAIN, LV_STATE_DEFAULT);

在这个示例中,我们创建了一个按钮对象 button,然后使用 lv_btn_set_style 函数为按钮添加了一个样式。最后,我们使用 lv_obj_remove_style 函数移除了按钮的 LV_BTN_STYLE_REL 样式。

3.lv_arc_set_mode

在 LVGL(LittlevGL)中,lv_arc_set_mode 函数用于设置弧形(Arc)对象的模式。弧形对象是一个圆弧,用于显示某个值的进度或范围。该函数的原型如下:

void lv_arc_set_mode(lv_obj_t * arc, lv_arc_mode_t mode);
  • arc 是指向弧形对象的指针。
  • mode 是要设置的弧形模式,可以是以下之一:
    • LV_ARC_MODE_NORMAL: 普通模式,弧形对象显示一个进度值。
    • LV_ARC_MODE_SYMMETRICAL: 对称模式,弧形对象显示一个对称的范围值。
    • LV_ARC_MODE_ENDLESS: 无限模式,弧形对象无限循环显示进度。

以下是一个示例代码,展示如何使用 lv_arc_set_mode 函数设置弧形对象的模式:

// 创建一个弧形对象
lv_obj_t *arc = lv_arc_create(lv_scr_act(), NULL);

// 设置弧形对象的模式为对称模式
lv_arc_set_mode(arc, LV_ARC_MODE_SYMMETRICAL);

在这个示例中,我们创建了一个弧形对象 arc,并使用 lv_arc_set_mode 函数将弧形对象的模式设置为对称模式。

3.代码实例

static void event_cb(lv_event_t *e)
{
    lv_obj_t *target=lv_event_get_target(e);  //获取触发源
    printf("%d\n",lv_arc_get_value(target));  //获取当前值
}

void my_lvgl(void)
{
   lv_obj_t *arc=lv_arc_create(lv_scr_act());  //创建圆弧部件
   lv_obj_center(arc);
   lv_arc_set_range(arc,0,100);   //设置范围值
   lv_arc_set_value(arc,0);  //设置当前值

    lv_arc_set_bg_angles(arc,0,360); //设置背景弧
    //lv_arc_set_angles(arc,0,360);  //设置前景弧

    lv_arc_set_rotation(arc,270);  //设置旋转角度
    lv_obj_add_event_cb(arc,event_cb,LV_EVENT_VALUE_CHANGED,NULL);//添加事件,值改变触发
    lv_arc_set_mode(arc,LV_ARC_MODE_REVERSE);  //设置模式
    lv_arc_set_change_rate(arc,90);   //设置绘制速度
    lv_obj_remove_style(arc,NULL,LV_PART_KNOB);  //删除旋钮
    lv_obj_clear_flag(arc,LV_OBJ_FLAG_CLICKABLE);  //去除点击属性
}

二.线条部件

1.知识概述

LVGL部件6_第4张图片

LVGL部件6_第5张图片

2.函数接口

1.lv_obj_set_style_line_rounded

lv_obj_set_style_line_rounded 函数。该函数的原型如下:

void lv_obj_set_style_line_rounded(lv_obj_t * obj, lv_obj_part_t part, bool is_rounded);
  • obj 是指向要设置线条样式的对象的指针。
  • part 是指定要设置样式的对象部分。可以使用预定义的常量,如 LV_OBJ_PART_MAIN 表示主要部分,或者使用 LV_PART_CUSTOM 表示自定义部分。
  • is_rounded 是一个布尔值,用于指定是否将线条样式设置为圆角。true 表示应用圆角样式,false 表示使用直角样式。

以下是一个示例代码,展示如何使用 lv_obj_set_style_line_rounded 函数将对象的线条样式设置为圆角:

// 创建一个对象
lv_obj_t *obj = lv_obj_create(lv_scr_act(), NULL);

// 将对象的线条样式设置为圆角
lv_obj_set_style_line_rounded(obj, LV_OBJ_PART_MAIN, true);

在这个示例中,我们创建了一个对象 obj,然后使用 lv_obj_set_style_line_rounded 函数将该对象的线条样式设置为圆角。

2.lv_line_set_y_invert

在LVGL(LittlevGL)中,可以使用 lv_line_set_y_invert 函数来设置线条对象的 Y 坐标是否翻转。该函数的原型如下:

void lv_line_set_y_invert(lv_obj_t * obj, bool y_invert);
  • obj 是指向要设置 Y 坐标翻转的线条对象的指针。
  • y_invert 是一个布尔值,用于指示是否要翻转 Y 坐标。true 表示翻转 Y 坐标,false 表示不进行翻转。

以下是一个示例代码,展示如何使用 lv_line_set_y_invert 函数来设置线条对象的 Y 坐标翻转:

// 创建一个线条对象
lv_obj_t *line = lv_line_create(lv_scr_act(), NULL);

// 设置线条对象的 Y 坐标翻转
lv_line_set_y_invert(line, true);

在这个示例中,我们创建了一个线条对象 line,然后使用 lv_line_set_y_invert 函数将该线条对象的 Y 坐标翻转设置为 true

你可能感兴趣的:(LVGL,LVGL,单片机,gui)