lvgl 画好一个圆弧arc 要了解的相关知识

目录

  • 一、概述
    • 1. css盒子模型示意图
    • 2. 圆弧的理解对象
    • 3. lvgl 版本
  • 二、功能细节
    • 1. 圆弧的角度
      • 1.1 圆弧的0度在哪里?
      • 1.2 设置圆弧角度的
      • 1.3 设置圆弧的背景角度
    • 2. 圆弧的半径
    • 3. 圆弧的圆角
      • 3.1 设置圆弧的圆角
        • 效果如下:
    • 4. 圆弧的宽度
      • 4.1圆弧主体的宽度
      • 4.2 圆弧指示器的宽度
    • 5. 设置圆弧对象的位置
      • 5.1设置对象的绝对坐标
      • 5.2设置相对父类的位置
    • 6. 设置圆弧的颜色
      • 6.1 背景颜色
      • 6.2 圆弧主体颜色
      • 6.3 圆弧指示器颜色
    • 7. 设置圆弧的填充距离
      • 7.1 填充的定义
      • 7.2 API 使用如下
        • 将四个内边距分别设置为20
        • 将四个内边距全部设置为0
      • 7.3 内边距为0 的情况

一、概述

1. css盒子模型示意图

lvgl 的样式设置参考了css 的盒子模型的概念,了解盒子模型的相关知识点,有助于利用lvgl 实现我们需要的UI效果。
在这里插入图片描述

2. 圆弧的理解对象

圆弧对象不仅仅是“红绿色圆”所组成的部分,而是图中以白色为背景的所有区域。

在这里插入图片描述

3. lvgl 版本

V8.3.x

二、功能细节

1. 圆弧的角度

1.1 圆弧的0度在哪里?

默认模式下(NORMAL),圆弧的0度在3点钟的方向,随着度数的增长,圆弧向着顺时针的方向生长。

在这里插入图片描述

1.2 设置圆弧角度的

设置开始和结束角度

void lv_arc_set_angles(lv_obj_t * arc, uint16_t start, uint16_t end);

设置结束角度

void lv_arc_set_end_angle(lv_obj_t * arc, uint16_t end);

1.3 设置圆弧的背景角度

这里的背景指的是圆弧主体。

void lv_arc_set_bg_angles(lv_obj_t * arc, uint16_t start, uint16_t end);
void lv_arc_set_bg_start_angle(lv_obj_t * arc, uint16_t start);
void lv_arc_set_bg_end_angle(lv_obj_t * arc, uint16_t end);

2. 圆弧的半径

lvgl arc 没有直接提供api 去设置一个圆弧的半径。lv_obj_set_style_radius看起来很像,实际上是用来设置圆弧对象背景的4个角的弧度的。

由于arc 对象继承于obj 类对象,我们可以通过调用 lv_obj_set_size 函数来设置圆弧对象的宽和高,从而实现对圆弧半径的设置。

void lv_obj_set_size(lv_obj_t * obj, lv_coord_t w, lv_coord_t h);

3. 圆弧的圆角

3.1 设置圆弧的圆角

lv_obj_set_style_radius( ui_Arc1, 20, LV_PART_MAIN | LV_STATE_DEFAULT );
效果如下:

在这里插入图片描述

4. 圆弧的宽度

旧版本(V7.11)的lvgl 设置圆弧宽度的api 比较隐蔽,是通过设置样式的line_width 来实现设置圆弧宽度。

新版本(V8.3.x ) 的lvgl设置圆弧宽度如下:

void lv_obj_set_style_arc_width(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector)

4.1圆弧主体的宽度

lv_obj_set_style_arc_width( ui_Arc1, 10, LV_PART_MAIN | LV_STATE_DEFAULT );

4.2 圆弧指示器的宽度

lv_obj_set_style_arc_width( ui_Arc1, 10, LV_PART_INDICATOR | LV_STATE_DEFAULT );

5. 设置圆弧对象的位置

5.1设置对象的绝对坐标

void lv_obj_set_pos(lv_obj_t * obj, lv_coord_t x, lv_coord_t y);

5.2设置相对父类的位置

设置相对父类中央对齐。其他对齐方式,可以跳转到LV_ALIGN_CENTER 定义处,选择其他对齐方式。

lv_obj_set_align( ui_Arc1, LV_ALIGN_CENTER );

6. 设置圆弧的颜色

在这里插入图片描述

如上图所示,圆弧主要有三种颜色需要设置。

6.1 背景颜色

 lv_obj_set_style_bg_color( ui_Arc1, lv_color_white(), LV_PART_MAIN | LV_STATE_DEFAULT );

6.2 圆弧主体颜色

//绿色
lv_obj_set_style_arc_color( ui_Arc1, lv_color_hex( 0x04FF0F ), LV_PART_MAIN | LV_STATE_DEFAULT );

6.3 圆弧指示器颜色

lv_obj_set_style_arc_color( ui_Arc1, lv_color_hex( 0xFF404B ), LV_PART_INDICATOR | LV_STATE_DEFAULT );

7. 设置圆弧的填充距离

7.1 填充的定义

定义元素边框与元素内容之间的空间,即上下左右的内边距。

在这里插入图片描述

  • 上边距: pad_top
  • 下边距:pad_bottom
  • 左边距:pad_left
  • 右边距:pad_right

7.2 API 使用如下

将四个内边距分别设置为20
lv_obj_set_style_pad_left( ui_Arc1, 20, LV_PART_MAIN | LV_STATE_DEFAULT );
lv_obj_set_style_pad_right( ui_Arc1, 20, LV_PART_MAIN | LV_STATE_DEFAULT );
lv_obj_set_style_pad_top( ui_Arc1, 20, LV_PART_MAIN | LV_STATE_DEFAULT );
lv_obj_set_style_pad_bottom( ui_Arc1, 20, LV_PART_MAIN | LV_STATE_DEFAULT );

将四个内边距全部设置为0
lv_obj_set_style_pad_all( ui_Arc1, 0, LV_PART_MAIN | LV_STATE_DEFAULT );

7.3 内边距为0 的情况

在这里插入图片描述

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

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

相关文章

微服务学习 | Eureka注册中心

微服务远程调用 在order-service的OrderApplication中注册RestTemplate 在查询订单信息时,需要同时返回订单用户的信息,但是由于微服务的关系,用户信息需要在用户的微服务中去查询,故需要用到上面的RestTemplate来让订单的这个微…

如何选择合适的数据库管理工具?Navicat Or DBeaver

写在前面 在阅读本文之前,糖糖给大家准备了Navicat和DBeaver安装包,在公众号内回复“Navicat”或“DBeaver”或"数据库管理工具"来下载。 引言 对于测试而言,在实际工作中往往会用到数据库,那么选择使用哪种类型的数…

基于SSM的大学餐厅菜品推荐和点评系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

【华为OD机试高分必刷题目】神奇的卡片(C++等差数列实现)

🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,高分通过! 文章目录 【华为OD机试高分必刷题目】神奇的卡片(C等差数列实现&a…

虾皮插件能做数据分析的-知虾数据分析插件Shopee大数据分析平台

在如今的电商行业中,数据分析已经成为了一项至关重要的任务。通过对大量数据的收集和分析,企业可以更好地了解市场趋势、了解竞争对手、优化产品和店铺运营等。然而,要想做好数据分析,一个好用的工具是必不可少的。 虾皮插件——知…

ke11介绍本地,会话存储

代码顺序: 1.设置input,捕获input如果有多个用属性选择符例如 input[typefile]点击事件.向我们的本地存储设置键值对 2.在点击事件外面设置本地存储表示初始化的值.点击上面的事件才能修改我们想修改的值 会话(session)浏览a数据可以写到本地硬盘,关闭页面数据就没了 本地(…

2.Pandas数据预处理

2.1 数据清洗 以titanic数据为例。 df pd.read_csv(titanic.csv) 2.1.1 缺失值 (1)缺失判断 df.isnull() (2)缺失统计 # 列缺失统计 df.isnull().sum(axis0) # 行缺失统计 df.isnull().sum(axis1) # 统计缺失率 df.isnu…

CC攻击的前身

CC攻击的前身是一个名为Fatboy的攻击程序,而之所以后来人们会称之为CC,是因为DDoS攻击发展的初期阶段,绝大部分DDoS攻击都能被业界熟知的“黑洞”(Collapsar,一种安全防护产品)所抵挡,CC攻击的诞生就是为了…

会说话,情商高:职场人士必看的情商口才提升攻略

在职场上,口才和情商是非常重要的软实力。能言善辩,与人交流得心应手,往往可以帮助我们更好地完成工作任务,并获得更多的机会和提升。那么,如何才能培养出好的口才和高情商呢?本文将从以下几个方面给大家提供一些建议…

JMeter-BeanShell预处理程序和BeanShell后置处理程序的应用

一、什么是BeanShell? BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,JMeter性能测试工具也充分接纳了BeanShell解释器,封装成了可配置的BeanShell前置和后置处理器,分别是 BeanShell Pre…

Kafka 集群实现数据同步

Kafka 介绍 Kafka 是一个高吞吐的分布式消息系统,不但像传统消息队列(RaabitMQ、RocketMQ等)那样能够【异步处理、流量消峰、服务解耦】 还能够把消息持久化到磁盘上,用于批量消费。除此之外由于 Kafka 被设计成分布式系统&…

后端接口性能优化分析-多线程优化

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…

什么是模糊测试?

背景:近年来,随着信息技术的发展,各种新型自动化测试技术如雨后春笋般出现。其中,模糊测试(fuzz testing)技术开始受到行业关注,它尤其适用于发现未知的、隐蔽性较强的底层缺陷。这里&#xff0…

今天不学习今天写爱心特效HTML代码

效果&#xff1a; 操作过程 首先在桌面创建一个后缀为txt的文件&#xff0c;然后将下面的代码复制进去保存&#xff0c;再将.txt后缀改为html&#xff0c;最后点击这个文件就会出现爱心特效啦~ 具体代码如下&#xff1a; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.…

腾讯云服务器怎么样好用吗?腾讯云服务器好用吗?

大家好&#xff01;今天我们要来聊聊腾讯云服务器怎么样&#xff0c;好用吗&#xff1f;对于这个问题&#xff0c;我的答案是非常肯定的——好用&#xff01; 那么&#xff0c;腾讯云服务器究竟好在哪里呢&#xff1f; 首先&#xff0c;它的功能非常强大。它不仅能够提供云存…

通讯协议学习之路(实践部分):IIC开发实践

通讯协议之路主要分为两部分&#xff0c;第一部分从理论上面讲解各类协议的通讯原理以及通讯格式&#xff0c;第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN&#xff1b;视频会发布在bilibili(UID:399951374) 本文…

.Net 8正式发布

Net 8是官方号称有史以来性能最快的一个版本了。 .Net 8 增加了数以千计的性能、稳定性和安全性改进&#xff0c;以及平台和工具增强功能&#xff0c;有助于提高开发人员的工作效率和创新速度。 反正就是快&#xff0c;性能好、工作效率更高&#xff01; 这个版本&#xff0c…

防抖-节流-深拷贝-事件总线

一、防抖与节流 1.认识防抖与节流函数 防抖和节流的概念其实最早并不是出现在软件工程中&#xff0c;防抖是出现在电子元件中&#xff0c;节流出现在流体流动中 而JavaScript是事件驱动的&#xff0c;大量的操作会触发事件&#xff0c;加入到事件队列中处理。而对于某些频繁…

MySQL使用Xtrabackup恢复全量备份

1、下载之前的备份的全量压缩包 我使用的是备份到AWS存储桶,实验删数数据之前&#xff0c;我做了一次全量备份。 1.1 解压加密的压缩包到指定的目录 由于备份使用的是加密压缩包&#xff0c;现在解压也要用密码解压 解压格式&#xff1a; openssl enc -aes-256-cbc -d -p…

免费!IDEA插件推荐:Apipost-Helper

今天给大家推荐一款IDEA插件&#xff1a;Apipost-Helper-2.0&#xff0c;写完代码IDEA内一键生成API文档&#xff0c;无需安装、打开任何其他软件&#xff1b;写完代码IDEA内一键调试&#xff0c;无需安装、打开任何其他软件&#xff1b;生成API目录树&#xff0c;双击即可快速…