LVGL的基础知识总结

本文介绍了LVGL图形库中的面向对象编程概念,重点讲解了基础对象、部件、父类子类关系、布局、图层、样式设置、颜色管理和GUIGuider工具的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

详细的内容可以参考正点原子的LVGL开发指南,本文只记录重点内容 

正点原子后续的例程都是基于操作系统来写的

面向对象

LVGL 中,用户界面的基本构建成分是对象,也称为小部件,例如:按钮、标签、图片、列表、图表、文本区域,等等。值得注意的是,LVGL 图形库虽然是由 C 语言开发的,但其所采用的是一种面对对象编程思维,这就涉及到了“类”的概念。

C语言中,并没有“类”的概念,而 LVGL通过结构体的形式实现了“类”的功能(并非真的“类”)

也就是说,每一个部件都是一个对象,我们直接针对部件对象来操作即可。

为了方便统一管理,LVGL的所有部件都会有一个父类,LVGL中,父类是属于一种最基础的基础对象。

基础对象

基础对象本身就是一个小部件,当它被创建出来之后,其呈现出一个矩形。

除此之外,基础对象还是其他小部件的父类,所有部件的位置、大小等基本属性都是归基础对象管理的。屏幕就是最顶层的一个父类(除了屏幕没有自己的父类,其他部件都有)

由上图可知,在 LVGL 中,首先定义了 lv_obj_t 这个结构体,然后通过这个结构体去实例化一个基础对象(lv_obj),这个基础对象将作为父对象,去衍生更多的子对象(其他部件)。

值得注意的是,通过这种“类”的方式去衍生其他部件,所衍生出来的部件将会继承父对象的一些基本属性,例如大小、位置、样式,等等,因此,我们可以通过一套统一的函数去管理不同部件的基本属性。

基础对象的作用有四个:

① 管理其他部件的基本属性;

② 作为背景装饰;

③ 辅助布局;

④ 界面切换。

第一个作用内容比较多,我们后面单独讨论,先说下其他三个作用

1. 作为背景装饰

当基础对象被创建出来后,它默认是一个圆角矩形,如下图所示:

在设计较为复杂的 GUI 界面时,不同功能的模块之间需要清晰地划分区域,此时,我们

可以使用基础对象作为背景,对不同的区域进行划分。

2. 辅助布局

GUI 界面中有一些组成内容相似的模块时,可以利用基础对象作为父对象,创建出其他的部件,这些部件将出现在基础对象内部,此时,我们只需要管理各基础对象之间的布局即可,其他的部件会随之变化。类似于编组。

3. 界面切换

当基础对象做为父对象,创建出其他的部件时,这些被创建出来的部件将出现在其父对象的内部,换言之,此时的基础对象就是一个容器,它里面子对象会随之移动。在 UI 设计中,我们可以利用上述的特性,实现界面的切换,示意图如下所示:

由上图可知,基础对象 12 分别用于管理界面 12,它们之中存在一些子对象(例如开关),当用户需要切换界面时,只需切换容器即可。

LVGL 官方提供了很多与基础对象相关 API 函数,如下表所示:

最常用的有两个

创建基础对象

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值