LVGL 控件之(Arc)弧图形绘制

2023-11-18

一、 弧形组成

弧图形由背景弧和前景弧组成,它们有各自的起始角度和结束角度。

二、控件函数使用

  • 设置背景弧度的函数
lv_arc_set_bg_angles(arc, start_angle, end_angle)

或者用

lv_arc_set_bg_start_angle(arc, start_angle);
lv_arc_set_bg_end_angle(arc, end_angle);

背景弧:

  • 设置前景弧函数(指示器)
lv_arc_set_angles(arc, start_angle, end_angle)

或者用:

lv_arc_set_start_angle(arc, start_angle)
lv_arc_set_end_angle(arc, start_angle)

前景弧(指示器):

合并到一起后的效果:

  • 代码
lv_arc_set_bg_angles(arc, 0, 180);//背景角度设置
lv_arc_set_angles(arc, 0, 160);//前景(指示器)角度设置

三、角度控制

角度控制默认是顺时针方向,从最右边水平方向开始旋转,角度范围是 [0~360] 度。

四,如何用鼠标或触摸板控制指示器进度条

static void arc_event_handler(lv_obj_t* obj, lv_event_t event)
{
	int angle = 0;
	if (event == LV_EVENT_CLICKED) 
	{
		printf("arc Clicked\n");
	}
	else if (event == LV_EVENT_VALUE_CHANGED)               // 角度改变事件,手触摸/拖动进度条
	{				
		angle = lv_arc_get_angle_end(obj);					// 获取事件对象改变的角度
		static char buf[8];
		lv_snprintf(buf, sizeof(buf), "Arc %d", angle);		// 将值变为字符串
		lv_obj_t* label = lv_obj_get_child(obj, NULL);		// 获取事件对象的标签子对象
		lv_label_set_text(label, buf);						// 设置标签文本
		lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, 0);	// 标签文件有改变要重新设置对齐
		printf("Value_Changed:%d\n", angle);
	}
}


void lv_ex_arc_1(void) 
{
	static lv_style_t angles_style;
	lv_style_init(&angles_style);
	lv_style_set_line_color(&angles_style, LV_STATE_DEFAULT, LV_COLOR_RED);
	
	// 创建一个Arc
	lv_obj_t* arc = lv_arc_create(lv_scr_act(), NULL);

	/*设置背景起始角度*/
	lv_arc_set_bg_start_angle(arc, 90);
	lv_arc_set_bg_end_angle(arc, 450);
	//lv_arc_set_bg_angles(arc, 90, 450);
	
	lv_arc_set_range(arc,0,450);

	/*设置弧的大小*/
	lv_obj_set_size(arc, 150, 150);
	lv_obj_align(arc, NULL, LV_ALIGN_CENTER, 0, 0);

	/*设置控件可触摸调整结束角度*/
	lv_arc_set_adjustable(arc, true);

	lv_obj_t* label = lv_label_create(arc, NULL);		// 在Arc控件上创建一个标签
	lv_obj_align(label, arc, LV_ALIGN_CENTER, 0, 0);
	lv_label_set_text(label, "Arc");

	lv_obj_add_style(arc, LV_ARC_PART_INDIC, &angles_style);

	/*注册事件回调*/
	lv_obj_set_event_cb(arc, arc_event_handler);

}
  • 模拟器输出结果

鼠标可以拖动指示器旋转。这个功能的实现,主要调用了 lv_arc_set_adjustable(arc, true) 函数,关于这个可调弧度的函数的使用需要注意:

它的起始位置必须是从6点钟方向开始(90度)。
如果想做一个闭合的圆形指示器,结束角度应该设置为450度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LVGL 控件之(Arc)弧图形绘制 的相关文章

  • 【Linux】Systemd+rc.local设置开机自启动

    1 问题描述 ubuntu18 04不再使用 inited 管理系统 改用 systemd 启动时 默认不再使用调用 etc rc local 如果想开机时调用 etc rc local 需要修改systemd的配置 2 解决方法 2 1
  • 任意进制之间的转换(C++实现)

    任意进制之间的转换 C 实现 题目描述 输入格式 第一行输入两个整数 n 和 m 2 lt n m lt 16 n 代表的是第二行输入的数的进制 m 代表的是输出的数字的进制 第二行输入一个x 如果有字母 输入大写字母 输出格式 输出一个
  • PCA主成分分析

    PCA主成分分析 优点 降低数据的复杂性 识别最重要的多个特征 缺点 不一定需要 且可能损失有用信息 适用数据类型 数值型数据 PCA背景知识 移动坐标轴 考虑上图中的大量数据点 如果要求我们画出一条直线 这条线要尽可能覆盖这些点 那么最长
  • 在Matlab实现Kmeans算法(每行代码带注释)

    目录 一 前言 二 VQ概述 三 Kmeans算法 K means 的算法步骤为 四 Matlab代码实现过程 五 一点点可选改动 个人看法 参考链接 一 前言 本人对机器学习 人工智能算法方面没什么研究 只是学习过程中恰好碰到了 一开始看
  • 哪款 Linux 才是更好的 CentOS 替代品?

    AlmaLinux 是基于 RHEL 的企业级 Linux 发行版 以下是选择 AlmaLinux 作为 CentOS 替代方案的一些原因 CentOS 将于 2024 年 6 月到期 截至 2022 年 它为世界各地的许多服务器支持 事实
  • idea提示非法字符

    问题 解决方法 将编码格式UTF 8 BOM文件转为普通的UTF 8文件 一 简单方法 在AS右下角 将编码改为GBK 再转为UTF 8 可以解决 二 可以用EditPlus 1 将文件用EditPlus打开 然后选择Document 文件
  • 点积,内积,哈达玛积的区别

    哈达玛积哈达玛积 Hadamard product 是矩阵的一类运算 若A aij 和B bij 是两个同阶矩阵 若cij aij bij 则称矩阵C cij 为A和B的哈达玛积 或称基本积 乘完之后还是矩阵 点积点积在数学中 又称数量积
  • Unity_场景之间的跳转

    跳转场景之前 需要在 File gt Build Settings gt Add Open Scenes 或者 直接把 场景 拖拽进来 跳转场景方法1 已过时 跳转场景方法 public void OnStartGame string Sc
  • PC端地图Hybird应用开发(百度地图API+C#+JavaScript)

    接了一个外包 让我做地图系统 采用C 嵌套JavaScript编程 为Hybird应用 框架内存是基于winform 调用了控件webbrowser webbrowser解释 渲染html文件 JavaScript脚本 地图采用百度地图AP
  • Nginx 502 Bad Gateway 错误的解决方法

    502 bad gateway 的解决方法 通用配置proxy buffer size 4k 设置代理服务器 nginx 保存用户头信息的缓冲区大小 proxy buffers 4 32k proxy buffers缓冲区 网页平均在32k
  • 动态自适应可变加权极限学习机(Dynamic Adaptive Variable Weighted Extreme Learning Machine, DAVW

    动态自适应可变加权极限学习机 Dynamic Adaptive Variable Weighted Extreme Learning Machine DAVW ELM 预测算法附Matlab代码 极限学习机 Extreme Learning
  • C++ 合并链表

    合并2个递增链表 使得合并后仍保持递增顺序 MergeList cpp 合并2个排序的链表 2个递增的排序链表 合并这2个使得新链表中的结点仍是按照递增顺序排列的 include
  • 端口安全、MAC地址漂移、MACsec、流量控制、DHCP snooping

    二 知识点 1 端口安全 实验拓扑1 实验拓扑2 2 mac地址漂移 操作拓扑 3 MACSEC 4 流量抑制和风暴控制 演示拓扑 5 DHCP snooping 实验拓扑 DHCP snooping
  • Cisco switch vulnerability

    Cisco switch SSH Protocol Version 1 Session Key Retrieval https community cisco com t5 security knowledge base guide to
  • JSP通用分页

    通用分页核心思路 将上一次查询请求再发一次 只不过页码变了 实现步骤 1 先查询全部数据 baseDao
  • box-flex实现三等分布局

    前言 我还是个前端的菜鸟 现在在实习 接触到一些移动web的开发任务 遇到了很多问题 记录一下顺便分享给大家 问题 要实现下图的三等分屏幕效果 此页面为手机web页面 要求自适应宽度 探索 期初是用的width 33 33 但是这样很容易出
  • 【MLOps】第 4 章 : 开发模型

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • C语言getchar()函数:从控制台读取字符并立即回显

    头文件 include
  • 数据结构选择题

    1 数据元素及其关系在计算机存储器内的表示 称为数据的 B A 逻辑结构 B 存储结构 C 线性结构 D 非线性结构 2 某带头结点的单链表的头指针为 head 判定该链表为非空的条件是 B A headNULL B head gt nex
  • eclipse安装tomcat插件

    现在我只想说 我x你ma tmd 老子费了一下午 才他妈知道是怎么回事儿 原来是需要往eclipse了安装一个tomcat插件 害得我迷迷糊糊的搞了一下午 下班了都才搞明白 1 先下载一个tomcat插件 地址 http www eclip

随机推荐

  • 快速换线流程图_生产线快速切换的七大技巧

    SMED Single Minute Exchange of Die 一分钟即时换模 通常叫快速换模 也叫快速换产 是一种快速和有效的作业切换方法 这一概念指出 所有的转变或者启动都能够并且应该少于10分钟 因此才有了单分钟这一说法 所以又
  • python关键知识点

    1 变量 在程序中存储值或对象的名称 2 数据类型 指变量的数据类型 例如 str int float list tuple dict set 等 3 操作符 表示运算符号 例如加号 和减号 4 循环 通过重复执行某个代码块来实现多次操作的
  • 学习React与Next.js过程中的疑惑

    学习React与Next js过程中的疑惑 1 为什么React中函数作为props的时候 会出现无限调用的情况 而把函数放在箭头函数中就可以解决呢 2 next js与node js有什么区别 3 什么是快速刷新 4 Hooks出现的原因
  • IVTC/Deinterlace的来龙去脉

    IVTC Deinterlace的来龙去脉 1 胶片电影 曝光率为24帧 秒的progressive video 连续完整帧图像序列 它由无数个感光晶体 35mm可达5000 5000 实现图像曝光 而人眼在35mm的区域内能分辨的最大极限
  • 三句话,我让R语言自动升级了

    R语言是为数学研究工作者设计的一种数学编程语言 主要用于统计分析 绘图 数据挖掘 跟所有计算机语言一样 R语言也面临升级的问题 本文讲述了最快捷的升级R语言办法 不用重新安装之前的安装包 首先 进入R交互模式 然后三条命令搞定 instal
  • 抖音小程序开发教学系列(5)- 抖音小程序数据交互

    第五章 抖音小程序数据交互 5 1 抖音小程序的网络请求 5 1 1 抖音小程序的网络请求方式和API介绍 5 1 2 抖音小程序的数据请求示例和错误处理方法 5 2 抖音小程序的数据缓存和本地存储 5 2 1 抖音小程序的数据缓存机制和使
  • 交流电机绕组的分相

    交流电机绕组的分相 考虑到目前大多数伺服电机厂商已经逐渐使用集中式绕组进行制造 本文将以集中式绕组12槽10极电机为例简要介绍交流电机绕组的分相方法 即60 相带槽电势星形图方法1 槽电势星形图 当电机被带动旋转时 对于集中式绕组而言 每一
  • 穿越火线河北一区服务器位置,【 C F 史上最全的各大区“兵服”地址!】...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 电 信 区 四川二区 团队1 频道2 浙江二区 团队2 频道2 江西一区 团队1 频道2 高手1 频道10 广西一区 高手1 频道7 爆满 上海一区 爆破1 频道8 9 10 11 爆满 南方大
  • [LeetCode]大于给定和最短子数组

    对于数组的操作 在算法实现中 可以考虑三种思想 阵地攻守 例题https blog csdn net fmuma article details 79858876 指针碰撞 例题https blog csdn net fmuma artic
  • AD 常见绿色报错的消除

    TM 可以复位绿色错误 在这个里面 关闭所有报错 只打开电器里面的所有报错 23 PCB板框的评估及叠层设置 对PCB板框进行评估 1 全选器件 2 如果设置了快捷键但是没有起作用 右键单击上方菜单栏 如上图所示 然后找到更改的快捷键 删除
  • UE4 关于使用Webbrowser插件遇到的问题以及解决办法

    1 无法播放网页视频 这是因为UE4的WebBrowser自带的cef3为3071版本 默认不支持h364等直播流 导致web里的直播流无法播放 解决办法 第一种办法 重新编译了cef源码 改成支持H 264 然后在UE4安装目录下替换相关
  • 目标检测入坑指南3:VGGNet神经网络

    学了蛮久的目标检测了 但是有好多细节总是忘或者模棱两可 感觉有必要写博客记录一下学习笔记和一些心得 既可以加深印象又可以方便他人 博客内容集成自各大学习资源 所以图片也就不加水印了 需要自取 本专栏会详细记录本人在研究目标检测过程中的所学所
  • Flutter android及ios强制竖屏/横屏

    Flutter android及ios强制竖屏 横屏 在main dart内设置即可 在main dart内设置即可 void main WidgetsFlutterBinding ensureInitialized 不加这个强制横 竖屏会
  • Java:jdk-12.0.2安装教程(很全的哦)

    Java是一门综合性的编程语言 从最初设计时就综合考虑了嵌入式系统以及企业平台的开发支持 所以在实际的Java开发过程中 其主要有3种开发方向 分别为Java SE 其最早被称为J2SE Java EE 其最早被称为J2EE Java ME
  • Web移动端-touch事件

    一 引入 在一个项目demo中 实现单指触控卡片的向任意方向的拖动效果 网上没有现成的插件 所以只好原生js来写 产品要求需要禁止掉多点触控 这个过程很让人头疼 试了很多方法 都不太实现 后来仔细研究 测试了一下移动端的三个常用事件 二 事
  • Web前端——Javascript复习(数组)

    1 数组 1 程序 数据结构 算法 一个好的数据结构 可极大提高程序的执行效率 相关的多个数据应集中存储 管理 分类和排序 2 数组概念 一组连续的变量组成的集合 批量管理多个数据 创建 2 1 var 变量名 2 2 var 变量名 值1
  • 【Github相关】在GitHub上 git clone代码失败,显示:“ithub.com port 443: 连接超时“

    有时候 使用git clone 指令下载代码时显示显示 ithub com port 443 连接超时 可以使用gitclone加速 官网URL https gitclone com 官方描述 有下面三种方式可以使用 方法一 替换URL g
  • c语言 栈头文件,C语言——栈(Stack)

    源码 方式一 头文件 ifndef STACK H define STACK H struct node typedef struct node stack 判断栈是否为空 int isEmpty stack s create stack
  • linux修改静态ip方法&&如何使用xshell连接

    ifconfig查看本地ip和网卡信息 cd到目录 etc sysconfig network scripts 想修改那块网卡就vi他 例如修改eth0 这样eth0的网卡就修改完毕 退出vi进行网络重启 service network r
  • LVGL 控件之(Arc)弧图形绘制

    一 弧形组成 弧图形由背景弧和前景弧组成 它们有各自的起始角度和结束角度 二 控件函数使用 设置背景弧度的函数 lv arc set bg angles arc start angle end angle 或者用 lv arc set bg