当前位置: 首页 > news >正文

合宙Air724UG LuatOS-Air LVGL API--对象

对象
概念
在 LVGL 中,用户界面的基本构建块是对象。例如,按钮,标签,图像,列表,图表或文本区域。

属性
基本属性
所有对象类型都共享一些基本属性:

Position (位置)
Size (尺寸)
Parent (父母)
Click enable (单击启用)
我们可以使用 lvgl.obj_set_… 和 lvgl.obj_get_… 等前缀的函数设置或者获取这些属性。
例如:

– 设置基础对象的属性
lvgl.obj_set_size(btn, 100, 50) – 设置按键的大小
lvgl.obj_set_pos(btn, 20,30) – 设置按键的位置
特殊属性
有些对象类型也具有特殊的属性。例如,滑块具有

min、max、values (最小最大值)
current value (当前值)
custom styles (自定义样式)
对于这些属性,每种对象类型都有唯一的 API 函数。例如一个滑块的 API 调用过程:

– 设置滑块的特殊属性
lvgl.slider_set_range(slider, 0, 100) – 设置滑块的最小值和最大值
lvgl.slider_set_value(slider, 40, LV_ANIM_ON) – 设置当前值(屏幕坐标系位置)
lvgl.slider_set_action(slider, my_action) – 设置回调函数
工作机制
继承
父对象可以作为其子对象的容器。每个对象只能一个父对象(屏幕除外),但是一个父对象可以有无限多个子对象。父对象的类型没有限制,但是有特殊的父对象(例如,按钮)和特殊的子对象(例如,标签)。

追随
如果更改了父对象的位置,则子对象将与父对象一起移动,并且子对象的位置都保持相对于父对象位置不变。 例如,坐标 (0,0) 表示子对象将独立于父对象的位置保留在父对象的左上角,代码:

par = lvgl.obj_create(lvgl.scr_act(), nil) – 在当前屏幕中创建一个对象
lvgl.obj_set_size(par, 100, 80) – 设置对象的大小

obj1 = lvgl.obj_create(par, nil) – 基于前面创建的对象(par)创建一个子对象(obj1),之前的对像成为父对象
lvgl.obj_set_pos(obj1, 10, 10); – 设置子对象的位置
在这里插入图片描述

当我们修改父对象的位置,子对象也会一起移动,以保持和父对象的相对位置不变:

lvgl.obj_set_pos(par, 50, 50); – 移动父对象,子对象也会跟着移动,以保持相对位置不变
在这里插入图片描述

创建-删除
在LVGL中,可以在运行时动态地创建和删除对象。这意味着仅当前创建的对象需要消耗 RAM。例如,如果需要图表,我们可以在需要时创建它,并在不可见或不需要时将其删除。
每个对象类型都有各自的创建函数。它需要两个参数:

指向父对象的指针。创建屏幕时以 nil作为父级。
用于复制具有相同类型的对象的指针(可选)。如果不行进行复制操作为 nil。
创建函数如下所示:
lvgl._create(parent, copy)
lvgl.obj_del 将立即删除该对象。

我们可以使用 lv_obj_clean 删除对象的所有子对象(但不会删除对象本身):

lvgl.obj_clean(obj)
屏幕对象
创建屏幕对象
屏幕是没有父对象的特殊对象。应该像这样创建它们:

scr = lvgl.obj_create(nil, nil)
可以使用任何对象类型创建屏幕。例如:创建墙纸的基础对象或图像。

获取活动屏幕
这始终是每个显示屏上的活动屏幕。默认情况下,该库为每个显示创建并加载 “基础对象” 作为屏幕。
要获取当前活动的屏幕使用函数 lvgl.scr_act()

载入屏幕
调用函数 lvgl.scr_load(scr) 加载屏幕。

零件 (Parts)
控件可以包含多个 Parts。例如,按钮仅具有主要部分,而滑动条则由背景,指示器和旋钮组成。
控件名称的构造类似于 lvgl. + PART 。比如 lvgl.BTN_PART_MAIN 、 lvgl.SLIDER_PART_KNOB 。 通常在将样式添加到对象时使用 Parts。使用 Parts 可以将不同的样式分配给对象的不同 Parts。

状态
对象可以处于以下状态的组合:

lvgl.STATE_DEFAULT – 默认或正常状态
lvgl.STATE_CHECKED – 选中或点击
lvgl.STATE_FOCUSED – 通过键盘或编码器聚焦或通过触摸板/鼠标单击
lvgl.STATE_EDITED – 由编码器编辑
lvgl.STATE_HOVERED – 鼠标悬停(现在还不支持)
lvgl.STATE_PRESSED – 按下
lvgl.STATE_DISABLED – 禁用或无效
当用户按下,释放,聚焦等对象时,状态通常由库自动检测更改。 当然状态也可以手动检测更改。 要完全覆盖当前状态,调用 lvgl.obj_set_state(obj, part, lvgl.STATE…) 要设置或清除某个状态(但不更改其他状态),调用 lvgl.obj_add/clear_state(obj, part, lvgl.STATE_…) 可以组合使用状态值。例如: lvgl.obj_set_state(obj, part, lvgl.STATE_PRESSED)。

相关文章:

合宙Air724UG LuatOS-Air LVGL API--对象

对象 概念 在 LVGL 中,用户界面的基本构建块是对象。例如,按钮,标签,图像,列表,图表或文本区域。 属性 基本属性 所有对象类型都共享一些基本属性: Position (位置) Size (尺寸) Parent (父母…...

Java将PDF文件转为Word文档

Java将PDF文件转为Word文档 一、创建Springboot Maven项目 二、导入依赖信息 <repositories><repository><id>com.e-iceblue</id><url>https://repo.e-iceblue.cn/repository/maven-public/</url></repository></repositories&g…...

vite创建项目命令

1.第一步运行创建命令&#xff08;npm&#xff09; npm create vitelatest也可以使用yarn yarn create vite还可以 pnpm create vite注意的地方&#xff1a;首次创建的时候会出现这个 Need to install the following packages:create-vitelatest Ok to proceed? (y) 直接y就…...

解决Pandas KeyError: “None of [Index([...])] are in the [columns]“问题

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

前端加springboot实现Web Socket连接通讯以及测试流程(包括后端实现心跳检测)

【2023】前端加springboot实现Web Socket连接通讯&#xff08;包括后端实现心跳检测&#xff09; 一级目录二级目录三级目录 前言一、Web Socket 简绍1 为什么用 websocket&#xff1f; 二、代码实现1、前端&#xff08;html&#xff09;1.1、无前端向后端发送消息1.2、有前端向…...

node使用高版本的oracledb导致连接oracle的Error: NJS-138异常

异常信息如下 Error: NJS-138: connections to this database server version are not supported by node-oracledb in Thin mode 我的oracle版本是11g&#xff0c;之前的使用正常&#xff0c;今天却报错了&#xff0c;显示不支持thin模式&#xff0c;后面回退版本就可以了。...

RabbitMQ手动签收消息

RabbitMQ手动签收消息 这里讲解SpringBoot使用RabbitMQ进行有回调的用法和消费者端手动签收消息的用法。 1、pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"h…...

Unity 3d角色展示脚本(旋转 平移 缩放)展示界面

不考虑性能 很简陋的一个功能&#xff0c;主要是用于角色渲染的观察用&#xff0c;比simplecontroller要好用一点 using System; using UnityEngine;public class CharacterViewer : MonoBehaviour {public Transform target; // 人物模型的Transformpublic float rotationSpee…...

Spring Boot 将 Word 转换为 PDF

首先&#xff0c;确保项目中添加了对Apache POI和Apache PDFBox的依赖。可以在你的 pom.xml 文件中添加以下依赖&#xff1a; <dependencies><!-- Apache POI --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</arti…...

【PHP面试题82】system和exec是用来做什么的?有什么区别

文章目录 &#x1f680;一、前言&#xff0c;PHP中system和exec命令的作用&#x1f680;二、system()函数&#x1f680;三、exec()函数&#x1f680;四、区别和应用场景&#x1f50e;4.1 使用system()函数的应用场景&#x1f50e;4.2 使用exec()函数的应用场景&#x1f50e;4.3…...

05-微信小程序常用组件-表单组件

05-微信小程序常用组件-表单组件 文章目录 表单组件button 按钮案例代码 form 表单案例代码 image 图片支持长按识别的码案例代码 微信小程序包含了六大组件&#xff1a; 视图容器、 基础内容、 导航、 表单、 互动和 导航。这些组件可以通过WXML和WXSS进行布局和样式设…...

Lucky player —— Java 项目(Spring Boot)

一、项目介绍 项目名称&#xff1a;lucky player 项目的主要功能&#xff1a;本系统主要功能为构建了一个用户分享音乐的平台&#xff0c;普通用户不进行登录即可收听其他用户已经发布的专辑中的音乐。 作为博主则可以在该平台上传音频&#xff0c;以及在线音频录制上传。音频上…...

ios 声网agora 音视频直播场景下的集成总结

文章目录 一、前言二、视频会议场景2.1 场景描述2.2 功能列表三、电商直播场景3.1 场景描述3.2 功能列表3.3 技术方案四、声网iOS SDK集成4.1 集成4.2 示例demo4.3 核心代码4.3.1 初始化4.3.2 加入频道4.3.3 切换身份4.4.4 连麦4.4 相关问题4.4.1 监听观众角色用户事件五、相关…...

mysql 、sql server 临时表、表变量、

sql server 临时表 、表变量 mysql 临时表 创建临时表 create temporary table 表名 select 字段 [&#xff0c;字段2…&#xff0c;字段n] from 表...

15. Canvas制作汽车油耗仪表盘

1. 说明 本篇文章在14. 利用Canvas组件制作时钟的基础上进行一些更改&#xff0c;想查看全面的代码可以点击链接查看即可。 效果展示&#xff1a; 2. 整体代码 import QtQuick 2.15 import QtQuick.Controls 2.15Item{id:rootimplicitWidth: 400implicitHeight: implicitWi…...

解决git上传远程仓库时的最大文件大小限制

git默认限制最大的单文件100M&#xff0c;当某个文件到达50M时会给你提示。解决办法如下 首先&#xff0c;打开终端&#xff0c;进入项目所在的文件夹&#xff1b; 输入命令&#xff1a;git config http.postBuffer 524288000 执行完上面的语句后输入&#xff1a;git config…...

Midjourney API 国内申请及对接方式

在人工智能绘图领域&#xff0c;想必大家听说过 Midjourney 的大名吧&#xff01; Midjourney 以其出色的绘图能力在业界独树一帜。无需过多复杂的操作&#xff0c;只要简单输入绘图指令&#xff0c;这个神奇的工具就能在瞬间为我们呈现出对应的图像。无论是任何物体还是任何风…...

第一章 文件的输入和输出

一 创建一个文件,并写入数据 #include <stdio.h> int main(void) {FILE *fp;fp= fopen("test.txt","w+");fprintf...

java面试基础 -- 深克隆 浅克隆

引例 说到java的克隆你还记得多少? 一说到克隆你可能就会想起来那个接口, 没错, 他就是Cloneable Cloneable是java里面内置的很常用的接口, 我们说 Object类中也有一个clone方法: 但是要想合法调用 clone 方法, 必须要先实现 Clonable 接口, 否则就会抛出 CloneNotSupportedEx…...

网络安全在医疗行业中的重要性

不可否认&#xff0c;现代世界见证了技术和医疗行业的交织&#xff0c;塑造了我们诊断、治疗和管理健康状况的新方式。随着电子健康记录取代纸质文件&#xff0c;远程医疗缩短了患者和医疗服务提供者之间的距离&#xff0c;数字化转型既是福音&#xff0c;也是挑战。最近的全球…...

elemenPlus ElMessage 字符串如何换行问题

因为后端返回的数据是一长串&#xff0c;而且带有\r,\n等换行符&#xff0c;但是并没有生效。前端写法&#xff1a; // 抛出错误ElMessage.error(msg);我们知道\r&#xff0c;\n&#xff0c;\r\n 是在不同系统下的换行符的表示&#xff0c;但在JavaScript返回字符串中并没有生效…...

Linux socket网络编程

一、主机字节序列和网络字节序列 主机字节序列分为大端字节序列和小端字节序列&#xff0c;不同的主机采用的字节序列可能不同。大端字节序列是指一个整数的高位字节存储在内存的低地址处&#xff0c;低位字节存储在内存的高地址处。小端字节序列是指整数的高位字节存储在内存…...

【广州华锐互动】牲畜养殖VR模拟实操系统为传统教育注入新的生命力

随着科技的不断发展&#xff0c;虚拟现实(VR)技术已经逐渐走进我们的生活。在农业领域&#xff0c;VR技术的应用也日益广泛&#xff0c;为现代农业人才培养提供了新的途径。 由广州华锐互动开发的“牲畜养殖VR模拟实操系统”引起了广泛关注&#xff0c;系统包含了鸡、猪、牛、马…...

JavaScript基础(Dom操作)

目录 一&#xff0c;BOM模型1.1&#xff0c;BOM可实现功能 二&#xff0c;Window对象的常用属性2.1&#xff0c;Window对象的常用方法2.1-1&#xff0c;open()和close()方法 三&#xff0c;History对象四&#xff0c;Location对象五&#xff0c;Document对象的常用方法六&#…...

.NET6.0 System.Drawing.Common 通用解决办法

最近有不少小伙伴在升级 .NET 6 时遇到了 System.Drawing.Common 的问题&#xff0c;同时很多库的依赖还都是 System.Drawing.Common &#xff0c;而 .NET 6 默认情况下只在 Windows 上支持使用&#xff0c;Linux 上默认不支持这就导致在 Linux 环境上使用会有问题&#xff0c;…...

k8s ingress (二)

k8s ingress (二) Ingress介绍 在前面课程中已经提到&#xff0c;Service对集群之外暴露服务的主要方式有两种&#xff1a;NodePort和LoadBalancer&#xff0c;但是这两种方式&#xff0c;都有一定的缺点&#xff1a; NodePort方式的缺点是会占用很多集群机器的端口&#xff0…...

如何实现element UI中table操作栏更多按钮的展示与折叠?

解决思路: ​ 直接使用elementUI文档上Popover 弹出框组件 废话不多说,直接上代码吧 <el-table :data="locationList" v-loading="loading" border class="table" ref="multipleTable" @selection-change="handleSelecti…...

SpringBoot(二)

###SpringBoot原理分析 ###SpringBoot监控 ###SpringBoot项目部署 #SpringBoot自动配置 Condition&#xff1a;&#xff08;条件&#xff09; Condition是在Spring4.0增加的条件判断功能&#xff0c;通过这个功能可以实现选择性的创建Bean操作 SpringBoot是如何知道要创建…...

python脚本——批量将word文档转换成pdf文件

语言&#xff1a;python 3 用法&#xff1a;点击运行后&#xff0c;弹出窗口选择word文档所在文件夹&#xff0c;程序运行后对该文件夹下所有的word文件全部转换成pdf文件&#xff0c;生成的pdf文件名字与原wrod文件相同。 如运行中报错&#xff0c;需要自行根据报错内容按照…...

自然语言处理从入门到应用——LangChain:链(Chains)-[通用功能:链的保存(序列化)与加载(反序列化)]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 本文介绍了如何将链保存&#xff08;序列化&#xff09;到磁盘和从磁盘加载&#xff08;反序列化&#xff09;。我们使用的序列化格式是json或yaml。目前&#xff0c;只有一些链支持这种类型的序列化。随着时间的推移&…...

工程公司起名大全/广东优化疫情防控措施

目录 3.1过程语句 3.2任务、函数和void函数 3.3任务和函数概述 3.3.1在子程序中去掉begin...end 3.4子程序参数 3.4.1C语言风格的子程序参数 3.4.2参数的方向 3.4.3高级的参数类型 3.4.4参数的缺省值 3.4.5采用名字进行参数传递 3.4.6常见的代码错误 3.5子程序的返…...

网站开发培训学院/谷歌 google

vuex最简单、最详细的入门文档...

北京网站推广排名公司/为企业推广

越来越多迹象表明&#xff0c;微软将以Microsoft 365 for Consumers捆绑包的形式向消费者提供集成统一的应用程序和服务。据外媒ZDNet的Mary Jo Foley称&#xff0c;该捆绑包包括Office 365个人和家庭产品&#xff0c;不带Windows 10 OS&#xff0c;但带有Teams for Life(Micro…...

女士服装定制网站/网络营销公司经营范围

在ITI-9中描述PIX query事务的几个TestCase场景。其中有些是对于Query失败的描述。 ERR 段包含Error location&#xff0c; Error code&#xff0c; Error code text&#xff0c; 以及Error Alernate code和Error Alernate code text.而Error location包含segment id&#xff0…...

什么网站做装修的/链接买卖

前言 在微服务实战&#xff1a;基于Spring Cloud Gateway AWS Cognito 的BFF案例一文中&#xff0c; 介绍了基于Amazon Cognito的OAuth授权码模式的认证流程。本文中&#xff0c;我们将研究可能针对此流程的恶意攻击以及如何防止它们。你将了解如何使用状态随机数&#xff08…...

wordpress编辑器移植/企业文化标语

zip: 压缩&#xff1a; zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>] 解压&#xff1a; unzip [选项] 压缩文件名.zip 选项…...