LVGL说我怎么知道需要渲染哪些内容呢?(渲染的前提)

因为自己本身就是做多媒体这块的,对lvgl本身的介绍就不多说了,从实际函数调用讲一讲吧

设置需要刷新的obj

当某一个控件需要重新渲染的时候,需要我们把这个控件标记一下,下面就是一个简单的调用

1.lv_obj_invalidate(const lv_obj_t * obj);

//从调用它开始,这个obj就注定会被重新渲染

2.lv_obj_invalidate_area(obj, &obj_coords);

//obj_coords这个区域是在&obj->coords这个基础上,结合具体配置,进行适当扩展

3.lv_area_increase(&area_tmp, 5, 5);

//根据经验值,对area区域进行经验扩展,上下左右加5个像素。

4._lv_inv_area(lv_obj_get_display(obj),  &area_tmp);

//将该obj所对应需要刷新的区域加入到屏幕obj的刷新数组中。
lv_obj_get_display就是获取屏幕对象,支持多个屏幕。

5._lv_area_intersect(&com_area, area_p, &scr_area);

//获取该obj area和屏幕area的com区域

6.1. _lv_area_is_in(&com_area, &disp->inv_areas[i], 0);

//判断com 区域是否已经在屏幕obj的inv_areas数组中。inv_areas这个数组就是屏幕obj将要重新渲染的脏区.

6.2. lv_area_copy(&disp->inv_areas[disp->inv_p], tmp_area_p);

//将com area加入到屏幕obj的inv_areas数组中。

备注:


_lv_area_is_on(const lv_area_t * a1_p, const lv_area_t * a2_p),判断a1是否包含了a2

void _lv_area_join(lv_area_t * a_res_p, const lv_area_t * a1_p, const lv_area_t * a2_p), a1和a2合并为a area
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值