LVGL库的bar控件

进度条(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 文档

posted @ 2024-06-17 00:07  晖_IL  阅读(14)  评论(0编辑  收藏  举报