LVGL学习笔记2 - 对象

news2024/12/29 10:07:03

目录

1. 创建对象

2. 设置大小

3. 设置位置

4. 设置对齐方式

5. 对象的父子关系

6. 其他


前面的例子中,一个矩形创建都是用到obj的函数,obj即是指对象。LVGL的基本要素是对象,实现了屏幕上组件的基本属性,包括大小、坐标、父对象等属性。

1. 创建对象

lv_obj_t * lv_obj_create(lv_obj_t * parent);

参数:

parent - 父对象指针,如果是NULL,则表示创建一个screen。

返回:

创建的新对象指针。

2. 设置大小

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

参数:

obj - 对象指针

w - 设置的宽度

h - 设置的高度

其中w/h可以是

像素(数字)。

百分比(LV_PCT(x))是以对象或其父对象的大小的百分比,LV_PCT会把数字转化为百分比。

自动(LV_SIZE_CONTENT)是根据内容自动调整大小。

3. 设置位置

void lv_obj_set_x(struct _lv_obj_t * obj, lv_coord_t x);
void lv_obj_set_y(struct _lv_obj_t * obj, lv_coord_t y);
void lv_obj_set_pos(struct _lv_obj_t * obj, lv_coord_t x, lv_coord_t y);

参数:

obj - 对象指针

x - 设置的x坐标

y - 设置的y坐标

其中x, y的坐标值含义和对齐方式alignment有关,并且都是相对父对象,对齐方式默认是左顶点的方式。坐标值可以是像素也是可以是百分比。

4. 设置对齐方式

void lv_obj_set_align(struct _lv_obj_t * obj, lv_align_t align);
void lv_obj_align(struct _lv_obj_t * obj, lv_align_t align, lv_coord_t x_ofs, lv_coord_t     
    y_ofs);
void lv_obj_align_to(struct _lv_obj_t * obj, const struct _lv_obj_t * base, lv_align_t 
    align, lv_coord_t x_ofs, lv_coord_t y_ofs);

参数:

obj - 对象指针

align - 对齐方式

enum {
    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,

    LV_ALIGN_OUT_TOP_LEFT,
    LV_ALIGN_OUT_TOP_MID,
    LV_ALIGN_OUT_TOP_RIGHT,
    LV_ALIGN_OUT_BOTTOM_LEFT,
    LV_ALIGN_OUT_BOTTOM_MID,
    LV_ALIGN_OUT_BOTTOM_RIGHT,
    LV_ALIGN_OUT_LEFT_TOP,
    LV_ALIGN_OUT_LEFT_MID,
    LV_ALIGN_OUT_LEFT_BOTTOM,
    LV_ALIGN_OUT_RIGHT_TOP,
    LV_ALIGN_OUT_RIGHT_MID,
    LV_ALIGN_OUT_RIGHT_BOTTOM,
};
typedef uint8_t lv_align_t;

x_ofs: 对齐方式设置后x坐标的偏移

y_ofs: 对齐方式设置后y坐标的偏移

base:  新的对象指针,即obj相对新的对象指针对齐。

5. 对象的父子关系

当对象在创建时需要指定父对象,子对象的大小、位置等属性会随父对象改变,这样修改界面会很简单。

更改对象的父对象

void lv_obj_set_parent(struct _lv_obj_t * obj, struct _lv_obj_t * parent);

要获取对象的父对象

struct _lv_obj_t * lv_obj_get_parent(const struct _lv_obj_t * obj);

注意,返回NULL是表示是一个Screen。

6. 其他

其他到API函数暂时跳过,使用时再研究。

对象被创建时默认就是一个矩形对象。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQLite数据库-学生管理系统(2.0)

SQLite数据库-学生管理系统 1.要求 布局文件 --------View层Activity文件---------Controller层Helper文件:建立数据库和表,版本更新Dao层:对数据库表中数据增删改查操作Entity:数据库在项目中的类,主要用于定义与数据…

短视频创业:大部分人都误解了豆荚的作用,掌握正确方法你就悟了

短视频,豆荚是避不过的功能,那么豆荚的作用和要不要投豆荚呢? 对于一般人来说,可能会觉得那投豆荚就是向买粉丝、买播放量、买数据的这么一个付费工具 对于一个专业的短视频运营来说,它其实是一个撬动自然流量的工具…

GROMACS模拟分析-自由能形貌图的绘制

自由能形貌(free energy landscape,FEL)表征了模拟过程中蛋白质的自由能变化。自由能形貌图一般通过两个描述体系特征的量来进行绘制,例如RMSD和Rg,也有文献中用主成分分析PC1和PC2绘制。本文以RMSD和Rg两个特征量绘制…

C++ 实现字符串查找 KMP算法

前言 众所周知,字符串查找的应用范围非常广,网页上有各式各样的浏览器搜索,再到编程需要的vsCode或vsStudio都自带了搜索功能;一个查找算法的优劣可以直接影响用户的搜索体验如何但鉴于暴力搜索算法的O(m * n)复杂度,…

精选测试面试题

一、Web自动化测试 1.Selenium中hidden或者是display = none的元素是否可以定位到? 不能,可以写JavaScript将标签中的hidden先改为0,再定位元素 2.Selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以…

图文并茂的介绍用word生成一个很智能的目录

文章目录前期准备设置各级目录的字体样式准备一个新的页面(装目录)大工告成!作为一名程序员,写代码自然是我们的强项,除了写写代码使用计算机的能力也渐渐成为了考察我们的指标,今天我们介绍一个办公小技巧…

【图神经网络】Pytorch图神经网络库——PyG异构图学习

PyG异构图学习举个例子创建异构图Utility函数异构图Transformations创建异构图神经网络自动转换GNN模型使用异构卷积包装器部署现有的异构算子异构图采样参考资料大量真实世界数据集存储为异构图,这促使Pytorch Geometric(PyG)中引入专门的功…

Java项目:Springboot实现的一个简单博客管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目为前后台管理系统,包括博主与游客两种角色; 博主角色包含以下功能: 博主登录,发博客,博主可以删除博客…

使用yolov5 v7.0进行实例分割

1. 介绍 U版yolov5最新推出了v7.0版本,新增了基于yolov5进行实例分割的代码。作者提到yolov5 v7.0实现的实例分割是超越了所有的SOTA模型的效果,是目前为止速度和精度最高的。 2. 代码的使用 2.1 Setup 克隆GitHub仓库,安装依赖项,检查PyTorch和GPU。 git clone http…

GEO芯片数据分析更新(补富集分析与WGCNA)

GEO数据挖掘,表达芯片分析 举例:王同学近期拟通过生物信息学相关软件与数据库来探讨女性非抽烟者的非小细胞肺癌预后相关的显著性基因及潜在的治疗靶点,他在NCBI上查询到了1套芯片数据GSE19804。请帮助他完成该项目的设计与分析。 上一篇博…

Linux系统基础——内核初始化

内核初始化 特此说明: 刘超的趣谈linux操作系统是比较重要的参考资料,本文大部分内容和所有图片来源于这个专栏。 1 背景知识 BootLoader阶段后,cpu从实模式转换成保护模式。有了更强的寻址能力后,内核也已经加载到内存了,系统内…

2. 做一个极简 UI 库之Toast 组件

效果 API 设计 先设计好了 API 写起来代码才不会犯迷糊 Toast(message: string; otherParams?: ToastParams): ToastReturninterface ToastParams {time?: number;appendTo?: string | HTMLElement;dangerouslyUseHTMLString?: boolean; }interface ToastReturn {close():v…

Node.js - Express

文章目录目标一、初识 Express1、Express 简介(1)什么是 Express(2)进一步理解 Express(3)Express 能做什么2、Express 的基本使用(1)安装(2)创建基本的 Web …

认识 Fuchsia OS

认识 Fuchsia OS 1 说明背景 1.1 基本信息 开发者: Google编程语言: C、C、Rust、Go、Python、Dart内核: Zircon运作状态: 当前源码模式: 开放源代码初始版本: 2016年8月15日支持的语言: 英语支持平台: ARM64、X86-64内核类别: 微内核 基于能力 实时操作系统许可证: BSD 3 c…

node.js+uni计算机毕设项目高校迎新管理小程序(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

【2023 AR元宇宙过圣诞!】《Merry Meta Christmas》

啥也不说了,先看最终效果 3D场景资源、EasyAR_Plugin、图片与安卓App资源均已上传,点击该处下载 一、前言 圣诞节的真正含义是为了纪念耶稣诞生,象征着团圆美满,万物复苏,日子变得愈发美好 2021年是元宇宙的元年&…

UE5 狐獴演示Demo分析

1.特效的生成方式 1.1临时特效的生成:使用了已生成轨道临时创建该特效(不用在场景中放入该特效,而是临时创建即可)、系统生命周期轨道设置该特效的播放时长 1.2长期特效的生成:特效时长为该镜头片段长度 2.特效的类…

输出数组中每一行(列)中的最小值(最大值)numpy.amin()numpy.amax()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 输出数组中每一行(列)中的最小值(最大值) numpy.amin() numpy.amax() [太阳]选择题 对下面代码中np.amin(myList, 0)输出的结果为?…

java基于ssh的旅游系统

本项目主要发西安各个旅游景点和附近酒店信息的网站,用户可以根据旅游团一起旅游,可以也可以自驾游,还可以发布旅游活动等。 演示视频 https://www.bilibili.com/video/BV1wv411x7cg/?share_sourcecopy_web&vd_sourceed0f04fbb713154db…

【Vue】七、Vue-cli工程化开发

后端程序员的vue学习之路一、 Vue-cli安装Vue-cli1、安装node.js2、配置node.js环境变量3、 Npm仓库设置淘宝源4、全局安装 vue-cli5、创建vue应用程序1、 创建vue项目基础骨架:2、 运行项目:6、vue项目结构二、Vue.js项目运行逻辑分析1、 npm run dev命…