一、概述
仪表盘部件可以非常灵活地展示数据,其功能包括显示弧形(arcs)、指针(needles)、刻度线(ticks lines)以及标签(labels)。这意味着它可以模拟各种仪表盘样式。
仪表盘部件由四个部分组成,示意图如下:
LV_PART_MAIN
:主体背景;LV_PART_TICK
:仪表的刻度;LV_PART_INDICATOR
:仪表指针;LV_PART_ITEMS
:圆弧。
二、仪表盘部件
在 LVGL 中,当用户创建出一个仪表部件时,该部件并不具备仪表的角度、仪表的范围、仪表的刻度以及仪表的指针等功能(见下图),这些功能都是由用户自行设置的。接下来,我们分别介绍这些功能的添加和设置。
lv_obj_t* meter = lv_meter_create(lv_scr_act());
lv_obj_center(meter);
1、添加刻度
刻度分为小刻度和主刻度,主刻度是图中加粗的线条,而小刻度是图中正常的线条。这些刻度的添加是由三个函数来完成,如下表所示:
函数 | 描述 |
---|---|
lv_meter_add_scale() | 添加刻度 |
lv_meter_set_scale_ticks() | 设置小刻度 |
lv_meter_set_scale_major_ticks() | 设置主刻度 |
上表的函数调用是有一定的顺序的,首先调用第一个函数把刻度添加到仪表当中,该函数返回一个刻度的对象,然后我们根据这个刻度的对象分别设置小刻度和主刻度。
/**
* obj 指向仪表对象的指针
*/
lv_meter_scale_t *lv_meter_add_scale(lv_obj_t *obj);
/**
* meter : 指向仪表对象的指针
* scale : 指向刻度对象
* cnt : 小刻度的数量
* width : 小刻度的宽度
* len : 小刻度的长度
* color : 小刻度的颜色
*/
void lv_meter_set_scale_ticks(lv_obj_t *obj, lv_meter_scale_t *scale,
uint16_t cnt, uint16_t width,
uint16_t len, lv_color_t color);
/**
* meter : 指向仪表对象的指针
* scale : 指向刻度对象
* nth : 绘画主刻度的步长
* width : 主刻度的宽度
* len : 主刻度的长度
* color : 主刻度的颜色
* label_gap : 刻度与标签之间的间隙
*/
void lv_meter_set_scale_major_ticks(lv_obj_t *obj, lv_meter_scale_t *scale,
uint16_t nth, uint16_t width, uint16_t len,
lv_color_t color, int16_t label_gap);
例:
/* 获取当前活动屏幕的宽高 */
#define scr_act_width() lv_obj_get_width(lv_scr_act())
#define scr_act_height