LVGL 控件之仪表盘(lv_meter)


一、概述

仪表盘部件可以非常灵活地展示数据,其功能包括显示弧形(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
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值