量规(lv_gauge)¶
概述¶
量规是一种带有刻度标签和一根或多根针的仪表。
小部件和样式¶
量规的主要部分称为 LV_GAUGE_PART_MAIN
。它使用典型的背景样式属性绘制背景,并使用线和比例样式属性绘制“较小”比例线。它还使用text属性设置比例标签的样式。pad_inner用于设置刻度线和刻度标签之间的空间。
LV_GAUGE_PART_MAJOR
是一个虚拟小部件,它使用line和scale样式属性描述了主要的比例尺线(添加了标签)。
LV_GAUGE_PART_NEEDLE
也是虚拟小部件,它通过线型属性来描述针。的大小和典型的背景属性用于描述在所述针(多个)的枢转点的矩形(或圆形)。 pad_inner用于使针比刻度线的外半径小。
用法¶
设定值和针¶
量规可以显示多于一根针。使用 lv_gauge_set_needle_count(gauge, needle_num, color_array)
函数设置针数和每根针具有颜色的数组。数组必须是静态或全局变量,因为仅存储其指针。
可以使用 lv_gauge_set_value(gauge, needle_id, value)
来设置针的值。
规模¶
可以使用 lv_gauge_set_scale(gauge, angle, line_num, label_cnt)
函数来调整刻度角度以及刻度线和标签的数量。默认设置为220度,6个比例标签和21条线。
量表的刻度可以偏移。可以通过 lv_gauge_set_angle_offset(gauge, angle)
进行调整。
范围¶
量规的范围可以通过 lv_gauge_set_range(gauge, min, max)
指定。默认范围是0..100。
针图¶
图像也可用作针。图像应指向右侧(如==>)。要设置图像,请使用 lv_gauge_set_needle_img(gauge1, &img, pivot_x, pivot_y)
。 ivot_x
和 pivot_y
是旋转中心距左上角的偏移量。图像将使用来自 LV_GAUGE_PART_NEEDLE
中的样式的 image_recolor_opa
强度重新着色为针的颜色。
临界值¶
要设置临界值,请使用 lv_gauge_set_critical_value(gauge, value)
。此值之后,比例尺颜色将更改为scale_end_color。默认临界值为80。
范例¶
简易量规¶
上述效果的示例代码:
1 #include "../../../lv_examples.h"
2 #if LV_USE_GAUGE
3
4
5 void lv_ex_gauge_1(void)
6 {
7 /*Describe the color for the needles*/
8 static lv_color_t needle_colors[3];
9 needle_colors[0] = LV_COLOR_BLUE;
10 needle_colors[1] = LV_COLOR_ORANGE;
11 needle_colors[2] = LV_COLOR_PURPLE;
12
13 /*Create a gauge*/
14 lv_obj_t * gauge1 = lv_gauge_create(lv_scr_act(), NULL);
15 lv_gauge_set_needle_count(gauge1, 3, needle_colors);
16 lv_obj_set_size(gauge1, 200, 200);
17 lv_obj_align(gauge1, NULL, LV_ALIGN_CENTER, 0, 0);
18
19 /*Set the values*/
20 lv_gauge_set_value(gauge1, 0, 10);
21 lv_gauge_set_value(gauge1, 1, 20);
22 lv_gauge_set_value(gauge1, 2, 30);
23 }
24
25 #endif
自定义量规指针样式¶
上述效果的示例代码:
1 #include "../../../lv_examples.h"
2 #if LV_USE_GAUGE
3
4
5 void lv_ex_gauge_2(void)
6 {
7 /*Describe the color for the needles*/
8 static lv_color_t needle_colors[3];
9 needle_colors[0] = LV_COLOR_BLUE;
10 needle_colors[1] = LV_COLOR_ORANGE;
11 needle_colors[2] = LV_COLOR_PURPLE;
12
13 LV_IMG_DECLARE(img_hand);
14
15 /*Create a gauge*/
16 lv_obj_t * gauge1 = lv_gauge_create(lv_scr_act(), NULL);
17 lv_gauge_set_needle_count(gauge1, 3, needle_colors);
18 lv_obj_set_size(gauge1, 200, 200);
19 lv_obj_align(gauge1, NULL, LV_ALIGN_CENTER, 0, 0);
20 lv_gauge_set_needle_img(gauge1, &img_hand, 4, 4);
21 /*Allow recoloring of the images according to the needles' color*/
22 lv_obj_set_style_local_image_recolor_opa(gauge1, LV_GAUGE_PART_NEEDLE, LV_STATE_DEFAULT, LV_OPA_COVER);
23
24 /*Set the values*/
25 lv_gauge_set_value(gauge1, 0, 10);
26 lv_gauge_set_value(gauge1, 1, 20);
27 lv_gauge_set_value(gauge1, 2, 30);
28 }
29
30 #endif
相关API¶
TODO