LVGL核心部件——弧(arc)控件的介绍

概述

本文介绍LVGL核心部件——弧(arc),它由背景和前景弧组成。前景(指示器)可以进行触摸调整。

LVGL核心部件——弧(arc)控件

一、部件和样式

  •  LV_PART_MAIN 使用典型的背景样式属性绘制背景,使用圆弧样式属性绘制圆弧。 圆弧的大小和位置将遵循 padding 样式属性。

  • LV_PART_INDICATOR 使用 arc 样式属性绘制另一个圆弧。 它的填充值是相对于背景弧来解释的。

  • LV_PART_KNOB 使用所有背景属性和填充值在指标的末尾绘制一个句柄。 使用零填充,旋钮大小与指示器的宽度相同。 较大的填充使其更大,较小的填充使其更小。

二、用法

值和范围

可以使用 lv_arc_set_value(arc, new_value) 设置新值。 该值在可以用lv_arc_set_range(arc, min, max)修改的范围(最小值和最大值)中解释。 默认范围是 1..100。

指示弧绘制在主零件的弧上。 如果该值设置为最大值,则指示器弧将覆盖整个“背景”弧。 要设置背景弧的开始和结束角度,请使用 lv_arc_set_bg_angles(arc, start_angle, end_angle) 函数或 lv_arc_set_bg_start/end_angle(arc, angle)。

零度位于对象的中间右侧(3 点钟方向),并且度数沿顺时针方向增加。 角度应在 [0;360] 范围内。

旋转

可以使用 lv_arc_set_rotation(arc, deg) 添加到 0 度位置的偏移量。

模式

弧可以是以下模式之一:

  •  LV_ARC_MODE_NORMAL 指标弧从最小值绘制到当前值。

  • LV_ARC_MODE_REVERSE 指标弧从最大值到当前值逆时针绘制。

  • LV_ARC_MODE_SYMMETRICAL 指标弧从中间点绘制到当前值。

模式可以通过lv_arc_set_mode (arc, LV_ARC_MODE_...) 设置,并且仅当角度由lv_arc_set_value()设置或通过手指调整弧度时使用。

变化率

如果弧被按下,当前值将根据设置的变化率以有限的速度设置。 变化率以度/秒为单位定义,可以用lv_arc_set_change_rage(arc, rate)设置。

手动设置指示器

也可以直接使用 lv_arc_set_angles(arc, start_angle, end_angle) 函数或 lv_arc_set_start/end_angle(arc, start_angle) 设置指标弧的角度。 在这种情况下,设置的“值”和“模式”将被忽略。

换句话说,设置角度和值是独立的。 您应该使用值和角度设置。 将两者混合可能会导致意外行为。

要使圆弧不可调整,请移除旋钮的样式并使对象不可点击:

lv_obj_remove_style(arc, NULL, LV_PART_KNOB);

lv_obj_clear_flag(arc, LV_OBJ_FLAG_CLICKABLE);

Events(事件)

  • 按下/拖动圆弧以设置新值时发送“LV_EVENT_VALUE_CHANGED”。

  •  LV_EVENT_DRAW_PART_BEGIN 和 LV_EVENT_DRAW_PART_END 使用以下类型发送:

o   LV_ARC_DRAW_PART_BACKGROUND 背景弧。

§  部分:LV_PART_MAIN

§  p1:圆弧的中心

§  radius:弧的半径

§  arc_dsc

o   LV_ARC_DRAW_PART_FOREGROUND 前景弧。

§  部分:LV_PART_INDICATOR

§  p1:圆弧的中心

§  radius:弧的半径

§  arc_dsc

o   LV_ARC_DRAW_PART_KNOB 旋钮

§  部分:LV_PART_KNOB

§  draw_area:旋钮的面积 -rect_dsc:

按键

·        LV_KEY_RIGHT/UP 将值增加一。

·        LV_KEY_LEFT/DOWN 将值减一。

Example

Simple Arc

图片

#include "../../lv_examples.h"

#if LV_USE_ARC && LV_BUILD_EXAMPLES

void lv_example_arc_1(void)

{

  /*Create an Arc*/

  lv_obj_t * arc = lv_arc_create(lv_scr_act());

  lv_obj_set_size(arc, 150, 150);

  lv_arc_set_rotation(arc, 135);

  lv_arc_set_bg_angles(arc, 0, 270);

  lv_arc_set_value(arc, 40);

  lv_obj_center(arc);

}

#endif

Loader with Arc 

图片

#include "../../lv_examples.h"

#if LV_USE_ARC && LV_BUILD_EXAMPLES

static void set_angle(void * obj, int32_t v)

{

    lv_arc_set_value(obj, v);

}

/**

 * Create an arc which acts as a loader.

 */

void lv_example_arc_2(void)

{

  /*Create an Arc*/

  lv_obj_t * arc = lv_arc_create(lv_scr_act());

  lv_arc_set_rotation(arc, 270);

  lv_arc_set_bg_angles(arc, 0, 360);

  lv_obj_remove_style(arc, NULL, LV_PART_KNOB);   /*Be sure the knob is not displayed*/

  lv_obj_clear_flag(arc, LV_OBJ_FLAG_CLICKABLE);  /*To not allow adjusting by click*/

  lv_obj_center(arc);

  lv_anim_t a;

  lv_anim_init(&a);

  lv_anim_set_var(&a, arc);

  lv_anim_set_exec_cb(&a, set_angle);

  lv_anim_set_time(&a, 1000);

  lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);    /*Just for the demo*/

  lv_anim_set_repeat_delay(&a, 500);

  lv_anim_set_values(&a, 0, 100);

  lv_anim_start(&a);

}

以上是关于LVGL核心部件——弧(arc)的使用介绍。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于PHP的校园代购商城系统

有需要请加文章底部Q哦 可远程调试 基于PHP的校园代购商城系统 一 介绍 此校园代购商城系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。(附带参考设计文档) 技术栈:phpmysqlbootstrapphpstudyvscode 二 功能 …

制造业企业使用SD-WAN的意义

在信息技术和制造业越来越密不可分的背景下,推进智能制造,需要升级网络支撑工业互联网平台的搭建、数字化车间、智能工厂的建设等等。SD-WAN的应用使得制造业企业网络升级更为方便、快捷、低成本。 制造业企业总部、分支机构、工厂一般分布较为分散&…

Android MVP 写法

前言 Model:负责数据逻辑 View:负责视图逻辑 Presenter:负责业务逻辑 持有关系: 1、View 持有 Presenter 2、Model 持有 Presenter 3、Presenter 持有 View 4、Presenter 持有 Model 辅助工具:ViewBinding 执行…

静态网页设计——跑友原创区(HTML+CSS+JavaScript)

前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 感谢大佬的视频: https://www.bilibili.com/video/BV1AK411x75x/?vd_source5f425e0074a7f92921f53ab87712357b 使用技术:HTMLCSSJS 主要内容&am…

全网最细,接口+接口自动化测试面试题汇总(附回答)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、我们测试的接口…

02-微服务-Eureka注册中心

Eureka注册中心 假如我们的服务提供者user-service部署了多个实例,如图: 大家思考几个问题: order-service在发起远程调用的时候,该如何得知user-service实例的ip地址和端口?有多个user-service实例地址,…

「Vue3面试系列」Vue3 所采用的 Composition Api 与 Vue2 使用的 Options Api 有什么不同?

文章目录 开始之前正文一、Options Api二、Composition Api三、对比逻辑组织Options APICompostion API 逻辑复用 小结 开始之前 Composition API 可以说是Vue3的最大特点,那么为什么要推出Composition Api,解决了什么问题? 通常使用Vue2开…

杨中科 ASP.NETCore开发效率利器 HOT RELOAD

HOT RELOAD 1、困惑:修改了服务器端的代码,必须重新运行程序。 2、方法1: [启动 (不调试) ] 3、方法2: .NET 6开始的Hot Reload(热重载) 正常修改代码后 不重启,是无法看到新的数据展示在页面 修改 运行结果: 方式一:设置开始…

具有大电流,双通道 12V,短地短电源保护等功能的国产芯片GC8549 可替代ONSEMI的LV8548/LV8549

GC8549 可以工作在 3.8~12V 的电源电压上,每 通道能提供高达 1.5A 持续输出电流或者 2.5A 峰值 电流,睡眠模式下功耗小于 1uA。具有 PWM(IN/EN)输入接口,与行业标 准器件兼容,并具有过温保护,欠压保护&…

使用 PHP-FFMpeg 操作视频/音频文件

做音频合成的时候找到的一个php操作ffmpeg 的类库。GitHub地址:https://github.com/PHP-FFMpeg/PHP-FFMpeg/。本文的例子大部分都是上面的 在使用之前请安装好 FFMpeg 。如何安装?请看 FFmpeg 安装教程。 使用composer快速安装 > composer require …

Vue3-33-路由-路由的别名配置 alias

别名的作用 路由中的别名配置,可以实现 多个路径 对应 同一个路由。 例如 : 路由的路径是 /a; 配置别名为 : /a2; 则 访问 /a 或 /a2 的时候,都可以访问到 同一个组件。 别名的特点 关键字 : alias 当通过别名进行路由…

UE5 C++(十二)— 委托(代理)、多播委托

这里写目录标题 介绍定义声明委托绑定委托执行委托 单播委托多播委托动态多播代理 介绍 这个官网上有很详细介绍,这里介绍几个点 定义 委托 是一种泛型但类型安全的方式,可在C对象上调用成员函数。可使用委托动态绑定到任意对象的成员函数&#xff0c…

爬虫基础一(持续更新)

爬虫概念: 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程 分类: 1,通用爬虫:抓取一整张页面数据 2,聚焦爬虫:抓取页面中的局部内容 3,增量式爬虫&…

星穹铁道1.5版本活动【狐斋志异】,有哪些有趣故事和彩蛋

狐斋志异算是玩梗集大成者,加上剧情内补全了一些故事设定。版本活动名称【狐斋志异】致敬的是清朝小说家蒲松龄创作的《聊斋志异》。聊斋志异被国人所熟悉的莫过于里面的鬼怪故事,因此又称为《鬼狐传》。 这次【狐斋志异】开拓任务也是围绕着开拓者去十王…

鸿鹄电子招投标系统:源码级别解析电子招投标的精髓

招投标管理系统是一个集门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理于一体的综合性应用平台。它适用于招标代理、政府采购、企业采购和工程交易等业务的企业,旨在提高项目管理的效率和质量。该系…

Java后端开发——Ajax、jQuery和JSON

Java后端开发——Ajax、jQuery和JSON 概述 Ajax全称是Asynchronous Javascript and XML,即异步的JavaScript和 XML。Ajax是一种Web应用技术,该技术是在JavaScript、DOM、服务器配合下,实现浏览器向服务器发送异步请求。 Ajax异步请求方式不…

Docker中镜像的相关操作

1.辅助操作 docker version:用查看docker客户端引擎和server端引擎版本信息。 docker info:用来查看docker引擎的详细信息。 docker --help:用来查看帮助信息。 2.镜像Image docker images:查看当前本地仓库中存在哪些镜像。 …

速通C语言第十二站 文件操作

系列文章目录 速通C语言系列 速通C语言第一站 一篇博客带你初识C语言 http://t.csdn.cn/N57xl 速通C语言第二站 一篇博客带你搞定分支循环 http://t.csdn.cn/Uwn7W 速通C语言第三站 一篇博客带你搞定函数 http://t.csdn.cn/bfrUM 速通C语言第四站 一篇博客带…

Java重修第一天—学习数组

1. 认识数组 建议1.5倍速学习,并且关闭弹幕。 数组的定义:数组是一个容器,用来存储一批同种类型的数据。 下述图:是生成数字数组和字符串数组。 为什么有了变量还需要定义数组呢?为了解决在某些场景下,变…

ORACLE Primavera Unifier v23.12 最新虚拟机(VM)分享下载

引言 根据上周的计划,我近日简单制作了一个基于ORACLE Primavera Unifier 最新版23.12的虚拟机演示环境,里面包括了unifier的全套系统服务 此虚拟系统环境仅用于演示、培训和测试目的。如要在生产环境中使用此虚拟机,请您与Oracle 销售代表联…