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
函数将弧形对象的模式设置为对称模式。
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.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
。