在lvgl 中也有前端的重绘概念,而触发重绘的函数就是类似vue中的$set。在数据改变后重新渲染界面。
在动态改变控件的颜色,边框样式等属性时,可以调用lvgl自带的 lv_obj_invalidate 函数就可以实现页面的更新。
在页面共享的控件中通过按钮切换不同的显示内容时,可以很好的利用该函数,其只有一个参数就是当前变化的控件本身。
源码如下:
void lv_obj_invalidate(const lv_obj_t * obj)
{
LV_ASSERT_OBJ(obj, MY_CLASS);
/*Truncate the area to the object*/
lv_area_t obj_coords;
lv_coord_t ext_size = _lv_obj_get_ext_draw_size(obj);
lv_area_copy(&obj_coords, &obj->coords);
obj_coords.x1 -= ext_size;
obj_coords.y1 -= ext_size;
obj_coords.x2 += ext_size;
obj_coords.y2 += ext_size;
lv_obj_invalidate_area(obj, &obj_coords);
}