LVGL开发教程-objects对象

知不足而奋进 望远山而前行


目录

知不足而奋进 望远山而前行​

文章目录

前言

1.图层

2.objects

2.1 位置

2.2 尺寸

2.3 align

2.4 样式

总结


前言

在嵌入式 GUI 开发中,LVGL(Light and Versatile Graphics Library)是一个强大的工具,它提供了丰富的功能来创建和定制用户界面。其中,样式的应用是使界面看起来整洁和专业的关键。本文将重点介绍如何使用LVGL的样式系统,通过设置对象的尺寸、位置、对齐方式和外观等属性,来实现界面组件的定制化展示。


1.图层

LVGL具有图层概念,从顶层到底层依次是sys_layer层、top_layer层、act_scr层。

top_layer层及sys_layer层用来创建一些随处可见的内容。

top_layer层可以用来创建菜单栏,弹出窗口等...

鼠标光标可以放在所有层的上面以确保它始终可见,也就是放在sys_layer层。

一般都是在act_scr层创建各种控件(widgets),也就是objects对象。

2.objects

在LVGL中,用户界面的基本构建块是对象,也称为Widgets。例如Button、Label、Image、List、图表或文本区域。

创建objects对象并显示在act_scr层上:

// 当前画面
lv_obj_t* screen = lv_scr_act();

objects基本属性:

  • 位置:void lv_obj_set_pos(lv_obj_t * obj, lv_coord_t x, lv_coord_t y)
  • 尺寸:void lv_obj_set_size(lv_obj_t * obj, lv_coord_t w, lv_coord_t h)
  • align:void lv_obj_align(lv_obj_t * obj, lv_align_t align, lv_coord_t x_ofs, lv_coord_t y_ofs)
  • 样式:void lv_style_init(lv_style_t * style);

2.1 位置

objects设置位置的方法如下:

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

参数1:objects对象

参数2和参数3:坐标x和y

实现代码:

void first_screen(){//创建objects对象lv_obj_t * obj = lv_obj_create(lv_scr_act());//设置objects对象的位置lv_obj_set_pos(obj,100,300);
}

2.2 尺寸

objects设置尺寸的方法如下:

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

参数1:objects对象

参数2:宽度

参数3:高度

实现代码:

void first_screen(){lv_obj_t * obj = lv_obj_create(lv_scr_act());lv_obj_set_pos(obj,100,100);lv_obj_set_size(obj,300,500);
}

2.3 align

lv_obj_align用来设置obj在父控件中的显示位置,定义如下:

void lv_obj_align(lv_obj_t * obj, lv_align_t align, lv_coord_t x_ofs, lv_coord_t y_ofs)

参数1:objects对象

参数2:展示方式

参数3:在x方向的偏移

参数4:在y方向的偏移

实现代码:

void first_screen(){lv_obj_t * obj = lv_obj_create(lv_scr_act());lv_obj_set_size(obj, 200, 200);lv_obj_align(obj,LV_ALIGN_TOP_MID,0,0);
}

常见的展示方式有:

LV_ALIGN_DEFAULT = 0,

LV_ALIGN_TOP_LEFT,

LV_ALIGN_TOP_MID,

LV_ALIGN_TOP_RIGHT,

LV_ALIGN_BOTTOM_LEFT,

LV_ALIGN_BOTTOM_MID,

LV_ALIGN_BOTTOM_RIGHT,

LV_ALIGN_LEFT_MID,

LV_ALIGN_RIGHT_MID,

LV_ALIGN_CENTER

2.4 样式

Styles用于设置对象的外观。样式是一个lv_style_t类型的变量,它可以保存边框宽度、文本颜色等属性。

创建样式变量:

static lv_style_t style;

初始化样式方法:

void lv_style_init(lv_style_t * style);

给objects添加style:

void lv_obj_add_style(lv_obj_t * obj, lv_style_t * style, lv_style_selector_t selector)

参数1:objects对象

参数2:style样式

参数3:设置obj的状态或part,这里默认写0即可

经常设置的样式:

//设置obj的宽度和高度
void lv_style_set_width(lv_style_t * style, lv_coord_t value);
void lv_style_set_height(lv_style_t * style, lv_coord_t value);
//设置obj的x和y坐标
void lv_style_set_x(lv_style_t * style, lv_coord_t value);
void lv_style_set_y(lv_style_t * style, lv_coord_t value);
//设置背景圆角半径
void lv_style_set_radius(lv_style_t * style, lv_coord_t value);
//上下左右的padding值
void lv_style_set_pad_top(lv_style_t * style, lv_coord_t value);
void lv_style_set_pad_bottom(lv_style_t * style, lv_coord_t value)
void lv_style_set_pad_left(lv_style_t * style, lv_coord_t value);
void lv_style_set_pad_right(lv_style_t * style, lv_coord_t value);
// 设置背景颜色
lv_style_set_bg_color(&style1,lv_palette_main(LV_PALETTE_PINK));

代码实现:

void first_screen(){//创建样式static lv_style_t style;//初始化lv_style_init(&style);//设置宽度和高度lv_style_set_width(&style,100);lv_style_set_height(&style,100);//设置圆角半径lv_style_set_radius(&style, 20);//设置x坐标lv_style_set_x(&style,100);lv_style_set_y(&style,100);//创建显示对象lv_obj_t * obj = lv_obj_create(lv_scr_act());//设置样式lv_obj_add_style(obj, &style, 0);
}


总结

本文详细讲解了如何在LVGL中创建和应用样式,以及配置界面对象的位置和大小。首先,我们学习了如何初始化样式并设置其属性,如宽度、高度、圆角半径等。接着,展示了如何创建对象并将之前定义的样式应用于对象上,从而实现界面元素的外观定制。此外,还介绍了LVGL中常用的对齐方式和样式设置方法,使开发者能够根据具体需求调整和优化界面的显示效果。

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

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

相关文章

HTTP性能测试工具-wrk

wrk性能测试工具详解 wrk是一款轻量级但功能强大的HTTP基准测试工具,主要用于在单机多核CPU环境下对HTTP服务进行性能测试。它通过利用系统自带的高性能I/O机制(如epoll、kqueue等),结合多线程和事件模式,能够产生大量…

MAGs培养有线索了?宏组学中未培养微生物表型与培养条件预测

宏基因组测序技术让人们对地球上微生物的多样性有了更深入的了解,但分离培养是研究微生物的生理代谢功能并解析其生态作用的关键。2023年11月的世界微生物数据中心(WDCM)年会中,全面启动了全球“未培养微生物培养组”计划&#xf…

27、matlab傅里叶变换:fft()函数

1、傅里叶变换简介 傅里叶变换是数学中一种非常重要的工具,用于将一个函数(通常是时域函数)分解成一组正弦和余弦函数的和。通过傅里叶变换,可以将一个信号从时域转换到频域,以便更好地理解信号的频率成分和频谱特征。…

[保姆级教程]uniapp实现页面路由配置

文章目录 新建目录新建页面配置页面路由修改tabBar地址其他:在package.json中的pages配置详细 新建目录 先点击src–》新建–》目录 输入名称,并以此类推完成所有新建目录 新建页面 右击目录,点击新建–》vue文件 弹出弹框,…

JVM性能优化工具及问题排查

jvm性能优化工具 jdk提供给我们了很实用的工具来分析JVM的状态,线程以及配置,这些工具包含于jdk中,并且以java实现,是JVM性能优化必不可少的工具集,这些工具都在$JAVA_HOME/bin下 jps、jinfo、jstack、jmap、jstat基本…

力扣793. 阶乘函数后 K 个零

Problem: 793. 阶乘函数后 K 个零 文章目录 题目描述思路即解法复杂度Code 题目描述 思路即解法 1.根据题意可知即是要求取满足条件的n最小是多少,最大是多少,最大值和最小值一减,就可以算出来有多少个n满足条件了。 2.由于题目中的阶乘存在单…

springboot连接多个库

一个SpringBoot项目,同时连接两个数据库:比如一个是Mysql数据库,一个是oracle数据库(啥数据库都一样,连接两个同为oracle的数据库,或两个不同的数据库,只需要更改对应的driver-class-name和jdbc…

读AI新生:破解人机共存密码笔记05逻辑

1. 困难问题 1.1. 管理政府或教授分子生物学之类的问题要困难得多 1.2. 这些环境很复杂,大部分是不可观察的(一个国家的状态,一个学生的思想状态),还有更多的对象和对象类型,对动作…

云上战场:ToDesk云电脑、青椒云、顺网云全面对决

前言 记得端午放假期间,我已经在旅游的路上了,老板突然发短信,让我给他画个图,我手上的战斗机已经是十年前的老古董了(平常一直用的公司电脑,也没想过要换),压根满足不了老板的任务要求,不得已&…

了解振弦采集仪在建筑物安全监测中的应用与研究

了解振弦采集仪在建筑物安全监测中的应用与研究 摘要:河北稳控科技振弦采集仪是一种常用的结构物安全监测设备,广泛应用于建筑物、桥梁、塔楼等工程结构的监测。本文将从振弦采集仪的原理、应用案例和研究进展等方面进行详细介绍,以便更好地…

ClickHouse安装与下载22.3.2.2

ClickHouse安装与下载 目录 1. ClickHouse简介 1.1 ClickHouse优点: 1.2 ClickHouse缺点: 1.3 ClickHouse引擎: 1.3.1 数据库引擎 1.3.2 表引擎 2. ClickHouse下载安装 2.1 ClickHouse下载安装 2.2 ClickHouse使用 1. ClickHouse简…

2024最新IDEA插件开发+发布全流程 SelectCamelWords[选中驼峰单词](idea源代码)

2024最新IDEA插件开发(发布)-SelectCamelWords[选中驼峰单词](idea源代码) 参考文档 Jetbrains Idea插件开发文档: https://plugins.jetbrains.com/docs/intellij/welcome.html代码地址:https://github.com/yangfeng…

RIP路由协议汇总、版本兼容、定时器、协议优先级配置(华为)

#交换设备 RIP路由协议汇总 一、原理概述 当网络中路由器的路由条目非常多时,可以通过路由汇总(又称路由汇聚或路由聚合)来减少路由条目数,加快路由收敛时间和增强网络稳定性。路由汇总的原理是,同一个自然网段内的…

Java每日作业day6.18

ok了家人们今天我们继续学习方法的更多使用,闲话少叙,我们来看今天学了什么 1.重载 在同一个类中,可不可以存在同名的方法?重载:在同一个类中,定义了多个同名的方法,但每个方法具有不同的参数类型或参数个…

ClickHouse 高性能的列式数据库管理系统

ClickHouse是一个高性能的列式数据库管理系统(DBMS),主要用于在线分析处理查询(OLAP)。以下是对ClickHouse的详细介绍: 基本信息: 来源:由俄罗斯的Yandex公司于2016年开源。全称&…

DDP算法之线性化和二次近似(Linearization and Quadratic Approximation)

DDP算法线性化和二次近似 在DDP算法中,第三步是线性化系统动力学方程和二次近似代价函数。这一步是关键,它使得DDP能够递归地处理非线性最优控制问题。通过线性化和二次近似,我们将复杂的非线性问题转换为一系列简单的线性二次问题,逐步逼近最优解。通过这些线性化和二次近…

R语言做图

目录 1. 图形参数 2. 低级图形 3. 部分高级图形 参考 1. 图形参数 图形参数用于设置图形中各种属性。 有些参数直接用在绘图函数内,如plot函数可以用 pch(点样式)、col(颜色)、cex(文字符号大小倍数&…

pdf怎么压缩到2m以内或5m以内的方法

PDF作为一种广泛使用的文档格式,已经成为我们工作和生活中不可或缺的一部分。然而,有时候PDF文件内存会比较大,给我们的存储和传输带来了很大的不便。因此,学会压缩 PDF 文件是非常必要的。 打开"轻云处理pdf官网"&…

48-1 内网渗透 - 内核漏洞提权

权限提升 提权是指将普通用户的权限进行提升,也叫特权提升。在渗透测试中,通过利用各种漏洞提升webshell权限以夺得服务器权限。 系统内核漏洞提权 当目标系统存在已知的内核漏洞且没有更新安全补丁时,攻击者可以利用这些漏洞进行提权,从而获得系统级别的访问权限。 ###…

【记录45】【案例】echarts 柱状图3D效果

环境 echarts4.1.0 <template> <!-- 商场各楼层统计 --><div id"threethree"></div> </template><script> import * as echarts from "echarts" export default {name:"",components:{},data(){return {…