LVGL库的bar控件

news/2024/10/3 19:20:20

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/44533.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

CMake Tutorial (3.30-rc3版) 练习和点评

CMake Tutorial (3.30-rc3版) 练习和点评 CMake 官方文档提供了 CMake Tutorial, 目前最新版是 CMake-3.30-rc3, 有12个Step供用户练习。 CMake Tutorial 是从 CMake 3.16 版本开始能从官方网页找到, 并且每一版都有改进 Tutorial 内容。 作为有实际C/C++项目中大幅使用 CMa…

多线程-信号量

ManualResetEvent的用法初始化:创建一个ManualResetEvent实例,并设置其初始状态。通常,初始状态可以设置为false(表示事件尚未发生)或true(表示事件已经发生)。例如:ManualResetEvent mre = new ManualResetEvent(false);等待事件:在需要等待事件发生的线程中,调用Wa…

过滤器和拦截器的区别

一、拦截器和过滤器的区别 1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。 2、拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理…

typora快捷键配置

typora高亮快捷键配置 (typora的高亮没有默认快捷键, 需要自己添加) 1.激活高亮功能 偏好设置 → markdown → markdown扩展语法 → 勾选高亮 2.添加快捷键 (原教程可参见官网) 首先可将typra的语言显示换成English, 方便后续定义: 偏好设置 → 通用 → 语言 每个软件, 理论上每…

Elasticsearch 系列(七)- 在ASP.NET Core中使用高级客户端NEST来操作Elasticsearch

本章将和大家分享在ASP.NET Core中如何使用高级客户端NEST来操作我们的Elasticsearch。本章将和大家分享在ASP.NET Core中如何使用高级客户端NEST来操作我们的Elasticsearch。 NEST是一个高级别的Elasticsearch .NET客户端,它仍然非常接近原始Elasticsearch API的映射。所有的…

Perfetto分析进阶

一、Perfetto介绍 Perfetto是Android Q中引入的全新下一代平台级跟踪工具,为Android、Linux和Chrome平台提供了一种通用的性能检测和跟踪分析工具集。其核心是引入了一种全新的用户空间到用户空间的跟踪协议,该协议基于protobuf序列化机制将抓取的数据填充到共享内存缓冲区,…

Kali中MSF利用永恒之蓝(复现)

Kali中MSF利用永恒之蓝(复现) 1、进入MSF框架:2、搜索MS17_010漏洞:这里找到了四个模块:0、1、4是漏洞利用模块;2、3是辅助模块,主要探测主机是否存在MS17_010漏洞。 3、利用Auxiliary辅助探测模块对漏洞进行探测(查看下所需要的参数):4、设置要探测的远程目标(两种…