LVGL lv_gauge仪表盘(20)

lv_gauge

lv_gauge仪表盘是lv_linemeter控件外加标签、指针、中心原点组成,标签个数、指针个数可设置,lv_linemeter中的非活跃刻度线变成了关键数值点。

样式

/*Styles*/
enum {
    LV_GAUGE_PART_MAIN = LV_LINEMETER_PART_MAIN,
    LV_GAUGE_PART_MAJOR = _LV_LINEMETER_PART_VIRTUAL_LAST,
    LV_GAUGE_PART_NEEDLE,
    _LV_GAUGE_PART_VIRTUAL_LAST = _LV_LINEMETER_PART_VIRTUAL_LAST,
    _LV_GAUGE_PART_REAL_LAST = _LV_LINEMETER_PART_REAL_LAST,
};
typedef uint8_t lv_gauge_style_t;

例子

lv_obj_t * gauge1;
static void task_cb(lv_task_t task)
{
	if (lv_gauge_get_value(gauge1,0) >= lv_gauge_get_max_value(gauge1))
		lv_gauge_set_value(gauge1, 0, 0);
	else
		lv_gauge_set_value(gauge1, 0, lv_gauge_get_value(gauge1, 0)+1);

	if (lv_gauge_get_value(gauge1, 1) >= lv_gauge_get_max_value(gauge1))
		lv_gauge_set_value(gauge1, 1, 0);
	else
		lv_gauge_set_value(gauge1, 1, lv_gauge_get_value(gauge1, 1) + 2);

	if (lv_gauge_get_value(gauge1, 2) >= lv_gauge_get_max_value(gauge1))
		lv_gauge_set_value(gauge1, 2, 0);
	else
		lv_gauge_set_value(gauge1, 2, lv_gauge_get_value(gauge1, 2) + 3);
}
void lv_ex_gauge_2(void)
{
    /*Describe the color for the needles*/
    static lv_color_t needle_colors[3];
    needle_colors[0] = LV_COLOR_BLUE;
    needle_colors[1] = LV_COLOR_ORANGE;
    needle_colors[2] = LV_COLOR_PURPLE;

    LV_IMG_DECLARE(img_hand);

    /*Create a gauge*/
    gauge1 = lv_gauge_create(lv_scr_act(), NULL);
	lv_gauge_set_range(gauge1, 0, 80);//设置仪表盘数值范围,默认0-100
	lv_gauge_set_critical_value(gauge1, 60);//设置关键数值点,默认80
    lv_gauge_set_needle_count(gauge1, 3, needle_colors);//设置指针数量和颜色
	//设置仪表盘角度、刻度数、标签数
	lv_gauge_set_scale(gauge1, 300, 41, 9);
    lv_obj_set_size(gauge1, 220, 220);
    lv_obj_align(gauge1, NULL, LV_ALIGN_CENTER, 0, 0);
	//用img_hand这张图片当做指针,指针要指向右边且水平
    lv_gauge_set_needle_img(gauge1, &img_hand, 4, 4);
    /*允许对img_hand图片指针重绘色*/
    lv_obj_set_style_local_image_recolor_opa(gauge1, LV_GAUGE_PART_NEEDLE, LV_STATE_DEFAULT, LV_OPA_COVER);

    /*设置指针数值*/
    lv_gauge_set_value(gauge1, 0, 10);
    lv_gauge_set_value(gauge1, 1, 20);
    lv_gauge_set_value(gauge1, 2, 30);

	lv_task_create(task_cb, 300, LV_TASK_PRIO_MID, NULL);
}

img_hand图片
在这里插入图片描述

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值