一. LVGL GUI仪表控件的概念
线表对象由一些绘制比例的径向线组成。设置线表的值将按比例更改比例线的颜色。
二. LVGL GUI仪表小部件和样式
线表只有一个主要部分,称为 LV_LINEMETER_PART_MAIN 。它使用所有典型的背景属性绘制矩形或圆形背景,并使用 line 和 scale 属性绘制比例线。活动行(与当前值的较小值相关)从 line_color
变为 scale_grad_color。最后一行(当前值之后)设置为 scale_end_color 颜色。
三. LVGL GUI仪表控件的使用
1. 设置值(Set value)
用这个函数来设置仪表的新值lv_linemeter_set_value(linemeter, new_value),我们来写个程序验证下,创建两个仪表控件,一个是默认不设置值,一个设置为80
代码如下:
void lvgl_line_meter_set_value_test(void)
{
/*Create a line meter */
lv_obj_t* lmeter1 = lv_linemeter_create(lv_scr_act(), NULL);
lv_obj_set_pos(lmeter1, 150, 150);
lv_obj_t* lmeter2 = lv_linemeter_create(lv_scr_act(), NULL);
lv_obj_set_pos(lmeter2, 400, 150);
lv_linemeter_set_value(lmeter2, 80);
}
2. 范围跟角度(Range and Angles)
用这个函数来设置值得范围lv_linemeter_set_range(linemeter, min, max),默认是[0:100]
用这个函数来设置角度跟线的数量lv_linemeter_set_scale(linemeter, angle, line_num),默认220度跟18跟线,官网说31是有问题的
下面我们来写一个程序验证下,一共创建3个,最左边的是默认的,中间的范围设置为[0:200],设置值为80,最右边的设置角度是360,36跟线,设置值为80,代码如下:
void lvgl_line_meter_range_angle_test(void)
{
/*Create a line meter */
lv_obj_t* lmeter1 = lv_linemeter_create(lv_scr_act(), NULL);
lv_obj_set_pos(lmeter1, 150, 150);
lv_obj_t* lmeter2 = lv_linemeter_create(lv_scr_act(), NULL);
lv_obj_set_pos(lmeter2, 400, 150);
lv_linemeter_set_range(lmeter2, 0, 200);
lv_linemeter_set_value(lmeter2, 80);
lv_obj_t* lmeter3 = lv_linemeter_create(lv_scr_act(), NULL);
lv_linemeter_set_scale(lmeter3, 360, 36);
lv_obj_set_pos(lmeter3, 650, 150);
lv_linemeter_set_value(lmeter3, 80);
}
3. 角度偏移(Angle offset)
用这个lv_linemeter_set_angle_offset角度偏移,我们写个程序验证下
void lvgl_line_meter_angle_offset_test(void)
{
/*Create a line meter */
lv_obj_t* lmeter1 = lv_linemeter_create(lv_scr_act(), NULL);
lv_obj_set_pos(lmeter1, 150, 150);
lv_linemeter_set_value(lmeter1, 80);
lv_obj_t* lmeter2 = lv_linemeter_create(lv_scr_act(), NULL);
lv_obj_set_pos(lmeter2, 400, 150);
lv_linemeter_set_value(lmeter2, 80);
lv_linemeter_set_angle_offset(lmeter2,90);
}
4. 镜面(Mirror)
用这个来设置镜面lv_linemeter_set_mirror(linemeter, true/false)
void lvgl_line_meter_mirror_test(void)
{
/*Create a line meter */
lv_obj_t* lmeter1 = lv_linemeter_create(lv_scr_act(), NULL);
lv_obj_set_pos(lmeter1, 150, 150);
lv_linemeter_set_value(lmeter1, 80);
lv_obj_t* lmeter2 = lv_linemeter_create(lv_scr_act(), NULL);
lv_obj_set_pos(lmeter2, 400, 150);
lv_linemeter_set_value(lmeter2, 80);
lv_linemeter_set_mirror(lmeter2, true);
}
好了,完结了,更多精彩继续戳↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓