打印
[其他ST产品]

(分享)STM32之littlevGL系列教程:基本对象(lv_obj)的基本属性

[复制链接]
1015|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Hi,大家好,欢迎来到STM32之littlevGL课堂,我们在上节课中学习了如何搭建开发环境,相信聪明的你一定搭建好了,肯定急于学习新的知识,不过不要着急,本节教程教大家去了解一下基本的知识---对象的基本属性,理解好了本节课程,后面的课程才能理解的更加深入,废话不多说!

使用特权

评论回复
沙发
onlycook|  楼主 | 2021-6-11 09:01 | 只看该作者
本帖最后由 onlycook 于 2021-6-11 09:03 编辑

一 对象的基本属性
littlevGL 6.1.2 目前共有三十多种对象类型,本节教程我们来学习littlevGL最基本的一种对象类型--基本对象(lv_obj),这是三十多种对象类型中最基本的对象类型,其他的对象类型都是基于基本对象派生出来的,那么我们就来先来学习一下基本对象吧。
想知道基本对象有哪些属性,我们可以通过它的结构体去了解一下:
[color=rgb(160, 160, 160) !important]view source
[color=rgb(160, 160, 160) !important]print
[color=rgb(160, 160, 160) !important]?






我们可以看到这个结构体代码还是有一点多的,不过不要紧,本节教程我们只需要了解一个大概就可以,刚开始学习没必要研究的太深入,如果太关注底层的实现有时候反而会适得其反,如果你后面熟练的掌握了littlevGL的所有控件后,可以反过头来详细的去看一下具体的实现方式,以及作者的编程思维,当然这些都是后话。

使用特权

评论回复
板凳
onlycook|  楼主 | 2021-6-11 09:05 | 只看该作者
二 对象的基本属性介绍
我们通过代码来看一下,其实注释也已经非常清晰的指出有哪些基本的属性了:




我们本节教程先只看上面的这些属性。


使用特权

评论回复
地板
onlycook|  楼主 | 2021-6-11 09:07 | 只看该作者
1.父对象(struct _lv_obj_t * par):
首先它有一个父对象,那么父对象是什么呢?我们可以简单理解为当前对象是在哪一个窗口之内生成的,或者是基于哪一个对象派生的。
2.子对象(lv_ll_t child_ll):
然后它还有一个指向子对象的链表,其他对象可以是此对象的子对象,依次类推,当当前对象销毁时,会通过此链表依次销毁子对象、子对象的子对象等等。
3.坐标(lv_area_t coords):
然后就是坐标属性,包括在屏幕中的位置以及用来约束对象大小的高度和宽度。
对象的大小可以通过 lv_obj_set_width(obj, new_width) 和lv_obj_set_height(obj, new_height) 或单一函数 lv_obj_set_size(obj, new_width, new_height)来修改。
对象的坐标可以通过lv_obj_set_x(obj, new_x) 和 lv_obj_set_y(obj, new_y) 或单一函数lv_obj_set_pos(obj, new_x, new_y)来设置。
对象的位置我们还可以通过去其他对象的对齐方式去设定,这里给出一张图可以帮助大家更好的理解各种对齐方式:



使用特权

评论回复
5
onlycook|  楼主 | 2021-6-11 09:08 | 只看该作者
4.事件(lv_event_cb_t event_cb):
我们可以给对象设置一个事件回调,比如点击事件,拖拽事件,然后触发我们想要的结果。
我们可以通过此方式设置对象的事件回调:
lv_obj_set_event_cb(obj, event_cb)
我们只需要在回调函数中去完成我们的逻辑处理即可。具体都有哪些事件我们会在用到的时候再做详细说明,或者可以去查看一下lv_event_t都有哪些枚举类型。
5.信号(lv_signal_cb_t signal_cb):
其实信号相对来说与用户是不相关的,因为这一属性仅在库内部使用,所以这里我们也不再详细去讲解了。
6.设计(lv_design_cb_t design_cb):
这个属性目前基本用不到,此属性主要用于绘制对象或者遮罩图像。

使用特权

评论回复
6
onlycook|  楼主 | 2021-6-11 09:09 | 只看该作者
7.展属性(void * ext_attr):
我们可以通过此属性来给对象扩展一些属性,当我们觉得库中某些对象的功能不足,或者我们需要新增某些特殊的属性,我们都是可以设置的,就比如按钮对象相比于基本对象的不同,就是扩展的一些属性,可以看出littlevGL的对象属性是非常灵活。
8.样式(const lv_style_t * style_p):
样式属性决定了我们创建的对象的外观形象,但是样式又相对来说是比较麻烦的,因为我们描绘一个对象的外观的维度是非常多的,比如我们可以设置对象的背景,文本样式,填充样式,线条样式等等,不过我们刚开始学习自带的控件样式就足够我们使用了,所以不需要担心这一点。

这就是基本对象的一些基本属性,当然还一部分没有讲到,当前我们只需要了解这么多就足够了,了解了这些基本属性可以帮助我们更好的去理解某些控件的属性,本节就到这里,下一节我们学习如何创建一个基本对象。

使用特权

评论回复
7
zhamatu| | 2021-6-11 10:42 | 只看该作者
littlevGL是一种新的语言吗?不是编程是需要C语言的吗?为什么要用这个东西?

使用特权

评论回复
8
1988020566| | 2021-7-3 21:14 | 只看该作者
littlevGL系列的教程有合集吗      

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

389

主题

1463

帖子

3

粉丝