儀表盤是一種帶有刻度標簽和一根或多根針的儀表。比如車速/車轉速等
量規的主要部分稱為 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)
用這個函數來設置指定ID的指針的值lv_gauge_set_value(gauge,?needle_id,?value)
寫代碼看效果來了:
void lvgl_guage_value_needle_test(void)
{
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;
/*Create a gauge*/
lv_obj_t* gauge1 = lv_gauge_create(lv_scr_act(), NULL);
lv_gauge_set_needle_count(gauge1, 3, needle_colors);
lv_gauge_set_value(gauge1, 0, 10);
lv_gauge_set_value(gauge1, 1, 20);
lv_gauge_set_value(gauge1, 2, 30);
}

在說明這個之前,我們先來看下上圖儀表盤,他又他是220度的顯示圓盤,有22個刻度,有6個刻度標簽(0/20/40/60/80/100),所以就有了這個函數來設置角度,刻度數,標簽書
lv_gauge_set_scale(gauge,?angle,?line_num,?label_cnt),我們創建了兩個儀表盤,一個是默認的,一個修改了值,我們來看下實驗效果,
void lvgl_guage_scale_test(void)
{
/*Create a gauge*/
lv_obj_t* gauge1 = lv_gauge_create(lv_scr_act(), NULL);
lv_obj_set_pos(gauge1, 100, 200);
/*Create a gauge*/
lv_obj_t* gauge2 = lv_gauge_create(lv_scr_act(), NULL);
lv_obj_set_pos(gauge2, 400, 200);
lv_gauge_set_scale(gauge2,270,11,11);
}

用這個函數來設置范圍,默認范圍是[0:100],我們寫一個代碼測試下
void lvgl_guage_range_test(void)
{
/*Create a gauge*/
lv_obj_t* gauge1 = lv_gauge_create(lv_scr_act(), NULL);
lv_obj_set_pos(gauge1, 100, 200);
/*Create a gauge*/
lv_obj_t* gauge2 = lv_gauge_create(lv_scr_act(), NULL);
lv_obj_set_pos(gauge2, 400, 200);
lv_gauge_set_range(gauge2, 0, 180);
}

用這個函數來設置下指針圖標lv_gauge_set_needle_img(gauge1,?&img,?pivot_x,?pivot_y)
void lvgl_guage_needle_image_test(void)
{
LV_IMG_DECLARE(img_hand);
/*Create a gauge*/
lv_obj_t* gauge1 = lv_gauge_create(lv_scr_act(), NULL);
lv_obj_set_pos(gauge1, 100, 200);
lv_gauge_set_needle_img(gauge1, &img_hand, 0, 0);
lv_obj_t* gauge2 = lv_gauge_create(lv_scr_act(), NULL);
lv_obj_set_pos(gauge2, 400, 200);
lv_gauge_set_needle_img(gauge2, &img_hand, 40, 40);
}

你觀察以上儀表盤都是一個顏色不同的刻度,這個就是臨界值,默認是80,下面我們創建兩個,一個默認,一個改成90的
void lvgl_guage_critical_test(void)
{
/*Create a gauge*/
lv_obj_t* gauge1 = lv_gauge_create(lv_scr_act(), NULL);
lv_obj_set_pos(gauge1, 100, 200);
lv_obj_t* gauge2 = lv_gauge_create(lv_scr_act(), NULL);
lv_obj_set_pos(gauge2, 400, 200);
lv_gauge_set_critical_value(gauge2,90);
}

BUG????顯示的有點奇怪
儀表盤沒有特殊事件
好了,完結了,更多精彩繼續戳↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
