【 lvgl专题】LVGL核心部件——弧(arc)控件的介绍

news/2025/1/7 22:54:43/文章来源:https://www.cnblogs.com/FBsharl/p/18658604

概述

本文介绍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_EXAMPLESvoid 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_EXAMPLESstatic 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.hqwc.cn/news/865581.html

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

相关文章

10.18软件设计——工厂方法模式之加密算法

软件设计——工厂方法模式之加密算法 1、类图2、源代码2.1 结构目录2.2 所需jar包这里分享几个下载 jar 包的网址:http://www.mvnrepository.com/http://mvnrepository.com/http://findjar.comhttp://sourceforge.net/注:将 jar 包放入 lib 文件夹后要进行构建路径2.3 Met…

2024.12.14

SQL 语法 SQL(Structured Query Language)是一种用于管理和操作关系数据库的标准语言,包括数据查询、数据插入、数据更新、数据删除、数据库结构创建和修改等功能。。数据库表 一个数据库通常包含一个或多个表,每个表有一个名字标识(例如:"Websites"),表包含带…

在 GoRoute 中使用 NavigationBar

前言 在App 中通常会把主要的几个页面放在下方icon,让使用者能够方便操作,这个元件在flutter 中称为BottomNavigationBar。 而GoRouter则是Flutter 官方所提供的套件,可以用来整合整个专案的路由。 当这两个功能整合在一起的时候,一个不小心呈现出来的效果就会差很多。 准备…

MyWebServer提示501 Server error .php 映射支持模块加载失败!请检查相关模块文件是否存在,版本是否匹配!

前言全局说明MyWebServer提示.php 映射支持模块加载失败!请检查相关模块文件是否存在,版本是否匹配!一、说明 1.1 环境:二、问题 提示:501 Server error .php 映射支持模块加载失败!请检查相关模块文件是否存在,版本是否匹配!三、解决方法 3.1 缺少 fastcgi_mod.dll 文件3.2…

Easy.Admin:基于 .NET 8 和 Vue3 的后台管理系统,支持多种数据库和服务端渲染(SSR)

🌟 介绍 Easy.Admin 是一个高效且灵活的后台管理系统,采用了现代化的技术栈,旨在帮助开发者快速搭建高质量的后台管理平台。这个系统不仅支持 .NET 8 后端开发,还结合了 Vue3 和 TypeScript 前端技术,提供了一个功能强大且易于扩展的管理框架。同时,它还支持多种数据库,…

2024.10,14

HTML 颜色名目前所有浏览器都支持以下颜色名。 141个颜色名称是在HTML和CSS颜色规范定义的(17标准颜色,再加124)。下表列出了所有颜色的值,包括十六进制值。提示: 17标准颜色:黑色,蓝色,水,紫红色,灰色,绿色,石灰,栗色,海军,橄榄,橙,紫,红,白,银,蓝绿色,黄…

RASP从0到1

一、环境配置 在讲晦涩难懂的理论之前,先配个代码环境: https://xz.aliyun.com/t/4902?time__1311=n4%2Bxni0QKmTbG8DBDBqDqpDUO2QooDkbIbReDhttps://xz.aliyun.com/t/4903?time__1311=n4%2Bxni0QKmTbG8DyDBqDqpYHQTRZnpoD按照文1进行环境搭建,文1中文件名应为MANIFEST.MF…

springcloud版本选择

首先到官网:https://spring.io/projects/spring-cloud#overview 本文来自博客园,作者:余生请多指教ANT,转载请注明原文链接:https://www.cnblogs.com/wangbiaohistory/p/18658446

【网络安全法】某公众号作者擅自发布安全漏洞被处罚

今天,各大安全圈交流群疯狂转发某公众号作者擅自发布安全漏洞,被攻击者利用攻击某企业的消息。随着网安行业下行,大量网安从业者开始步入自媒体行业,有部分从业者为了博取眼球,增加流量,通过发布一些安全漏洞及poc来寻求更多人阅读和关注,显然作为网络安全从业者,没有仔…

Ultra-Low Precision 4-bit Training of Deep Neural Networks

目录概主要内容Radix-4 FP4 formatGradScaleTwo-Phase Rounding (TPR)Sun X., Wang N., Chen C., Ni J., Agrawal A., Cui X., Venkataramani S. and Maghraoui K. E. and Srinivasan V. Ultra-low precision 4-bit training of deep neural networks. NeurIPS, 2020.概 本文提…

征程 6X release版本内核模块安全加载

1.概述 征程 6X 系统在 release 编译时支持内核模块签名验证,仅加载使用正确密钥进行数字签名的内核模块。禁止加载未签名的内核模块或使用错误密钥签名的内核模块,客户需要替换成自己的 key 进行签名。 模块签名启用后,Linux 内核将仅加载使用正确密钥进行数字签名的内核模…

有奖活动:pick 你最爱的 AI 项目!拿社区年度大奖!

🎄 R 友们,一年一度的春节又这么水灵灵的快到来了!🙋 陈运营给大家准备了四重好礼,快!往!下!看!⬆️ RTE 开发者社区功能再次升级!新增小助手推荐、私信功能,还有神秘功能马上上线~等你来体验!🎁 更重要的是!我们给大家准备的丰~厚~礼~包~已就位,快来 p…