LVGL庫的bar控制元件

晖_IL發表於2024-06-17

進度條(lv_bar)

概述

1.進度條物件(元件)有一個背景和一個指示器. 指示器的寬度根據進度條的當前值2.自動設定.

3.如果設定進度條的寬度小於其高度,就可以建立出垂直襬放的進度條

4.不僅可以設定結束,還可以設定進度條的起始值,從而改變指標的起始位置

Untitled


樣式和零件

LV_PART_MAIN 進度條的背景,它使用典型的背景樣式屬性.填充屬性使指標器變小或變大.. 如果啟用動畫 LV_ANIM_ON,anim_time 樣式屬性設定填充動畫的時間。

**LV_PART_INDICATOR 指示器本身;也使用了所有典型的背景屬性。**


值和範圍

使用 lv_bar_set_value() 。用於設定進度條(bar)的值。這個函式的最後一個引數用於控制是否在設定值時應用動畫效果。

  • bar 是指向進度條物件的指標。

  • new_value 是要設定的新值。

  • anim 是一個列舉型別 lv_anim_enable_t,用於指定是否啟用動畫。這個列舉型別通常有兩個值:

    • LV_ANIM_OFF:不啟用動畫,立即設定新值。
    • LV_ANIM_ON:啟用動畫,進度條的值會平滑過渡到新值。
    lv_bar_set_value(my_bar, 50, LV_ANIM_ON);
    //這行程式碼會將進度條 my_bar 的值設定為 50,並且在設定過程中會有動畫效果
    lv_bar_set_value(my_bar, 50, LV_ANIM_OFF);
    //這行程式碼會立即將進度條 my_bar 的值設定為 50,沒有動畫效果。
    

整個進度條值的範圍(最小值和最大值),該範圍可以使用 [lv_bar_set_range](https://lvgl.100ask.net/master/API/widgets/bar/lv_bar.html#_CPPv416lv_bar_set_rangeP8lv_obj_t7int32_t7int32_t)(bar, min, max) 修改。預設範圍為 0..100,預設繪製方向為水平模式下從左到右和垂直模式下從下到上。如果最小值大於最大值,例如 100..0,繪圖方向變為相反方向。


模式

原文:該條形圖可以是以下模式之一:

  • LV_BAR_MODE_NORMAL 如上所述的普通進度條(預設)
  • LV_BAR_MODE_SYMMETRICAL 將指標從零值繪製為當前值。需要否定最小範圍和正最大範圍。
  • LV_BAR_MODE_RANGE 這個模式下也可以指定負的最小範圍。這樣進度條的起始值可以不是0,而是你指定的數值(參考示例),但是這樣設定的起始值 lv_bar_set_start_value(bar, new_value, LV_ANIM_ON/OFF) 必須小於結束值。

該進度條可以是以下模式之一:

  • LV_BAR_MODE_NORMAL 如上所述的普通進度條(預設)

    Untitled

  • LV_BAR_MODE_SYMMETRICAL用於配置進度條(bar)的模式,使其具有對稱性.

    Untitled

    在對稱模式下,進度條的最小值和最大值都相對於一箇中心點對稱。例如,如果進度條的範圍是從 -100 到 100,那麼 0 就是中心點,當你設定的值為負數時,進度條會從中心向左(或向下)增長,而正數則會從中心向右(或向上)增長。

    這個模式特別適用於需要表示正負變化的場景,比如溫度變化、音量控制等。

    lv_obj_t * bar = lv_bar_create(lv_scr_act());
    lv_bar_set_range(bar, -100, 100); // 設定進度條的範圍
    lv_bar_set_mode(bar, LV_BAR_MODE_SYMMETRICAL); // 啟用對稱模式
    lv_bar_set_value(bar, 50, LV_ANIM_OFF); // 設定進度條的值
    

    如果你設定的值為 50,進度條會從中心點向正方向擴充套件到 50。如果你設定的值為 -50,進度條會從中心點向負方向擴充套件到 -50。

  • **LV_BAR_MODE_RANGE** 在 LV_BAR_MODE_RANGE 模式下,進度條可以用來表示一個範圍,例如表示某個值的最小和最大範圍,或者表示一個區間。這個功能在需要顯示範圍或區間的場景中非常有用,比如溫度範圍、進度區間等。

    Untitled

    lv_obj_t * bar = lv_bar_create(lv_scr_act());
    lv_bar_set_range(bar, 0, 100); // 設定進度條的範圍
    lv_bar_set_mode(bar, LV_BAR_MODE_RANGE); // 啟用範圍模式
    lv_bar_set_value(bar, 40, LV_ANIM_OFF); // 設定進度條的起點值
    lv_bar_set_start_value(bar, 20, LV_ANIM_OFF); // 設定進度條的終點值
    

    在這個示例中,進度條的範圍是從 0 到 100,並且啟用了範圍模式。當設定進度條的起點值和終點值時,進度條會顯示從起點到終點的範圍

    這種模式非常適合需要表示區間的場景,比如顯示一個測量值的波動範圍、表示進度的某個階段等。


    案例

    官網有典型案例:

    Bar (進度條)(lv_bar) — LVGL 文件

相關文章