LVGL组件

news/2024/7/3 12:06:17/文章来源:https://www.cnblogs.com/ljw-boke/p/18279127

LVGL组件的使用

目录
  • LVGL组件的使用
    • 1 . 父和子对象
    • 2. 部件的基本属性及设置
      • 3. 图解:
        • 还有其他样式可以设置
    • 2. 组件分类

1 . 父和子对象

1719852439753

2. 部件的基本属性及设置

/******** 设置打小				     ********/
/******** 注意:设置部件位置时,坐标原点在父对象的左上角 ********/
lv_obj_set_size();		   //设置打小
lv_obj_set_width();	      //宽度
lv_obj_set_height();	      //高度/******** 设置位置				     ********/
lv_obj_set_pos(obj, new_x, new_y);		       //同时设置X、Y轴坐标
lv_obj_set_x(obj, new_x);		                //设置X轴坐标:
lv_obj_set_y(obj, new_y);		                //设置Y轴坐标:/******** 设置对齐				     ********/
//设置对齐(需要设置的对齐对象、对齐方式、偏移X、偏移Y)
lv_obj_set_align(obj, LV_ALIGN_...,x,y);
//设置对齐(需要设置的对齐对象、对起的目标、对齐方式、偏移X、偏移Y)
lv_obj_set_align_to();/******** 设置样式				     ********/
//设置样式(需要设置的对象、样式属性、样式值)
lv_obj_set_styles();
//根据样式属性设置样式值(需要设置的对象、样式属性、样式值)
{
static lv_style_t style; 									         /* 定义样式变量 */
lv_style_init(&style); 									            /* 初始化样式 */
lv_style_set_bg_color(&style, lv_color_hex(0xf4b183)); 		/* 设置背景颜色 */
lv_obj_t * obj = lv_obj_create(lv_scr_act()); 					/* 创建一个部件 */
lv_obj_add_style(obj, & style, LV_STATE_DEFAULT); 				/* 设置部件的样式 */
}
//直接对对象设置样式
{
lv_obj_t * obj = lv_obj_create(lv_scr_act()); 						            /* 创建一个部件 */
/* 设置部件的颜色样式 */
lv_obj_set_style_bg_color(obj, lv_color_hex(0xf4b183),LV_STATE_DEFAULT);	
}
//样式的宏定义
enum {LV_STATE_DEFAULT     	=  0x0000,		 /* 默认状态 */LV_STATE_CHECKED     	=  0x0001,		 /* 切换或选中状态 */LV_STATE_FOCUSED     	=  0x0002,		 /* 通过键盘、编码器聚焦或通过触摸板、鼠标单击 */LV_STATE_FOCUS_KEY   	=  0x0004,		 /* 通过键盘、编码器聚焦 */LV_STATE_EDITED      	=  0x0008,		 /* 由编码器编辑 */LV_STATE_HOVERED     	=  0x0010,		 /* 鼠标悬停(现在不支持)*/LV_STATE_PRESSED     	=  0x0020,		 /* 已按下 */LV_STATE_SCROLLED    	=  0x0040,		 /* 滚动状态 */LV_STATE_DISABLED    	=  0x0080,		 /* 禁用状态 */…
};
//单独设置部件中某个部分的样式
enum {LV_PART_MAIN		= 0x000000, 	 	/* 主体,像矩形一样的背景 */LV_PART_SCROLLBAR	= 0x010000, 	 	/* 滚动条 */LV_PART_INDICATOR	= 0x020000, 	 	/* 指示器,指示当前值 */LV_PART_KNOB		= 0x030000,	 	/* 手柄或旋钮,用于调整参数值 */LV_PART_SELECTED	= 0x040000, 	 	/* 选项框,指示当前选择的选项 */LV_PART_ITEMS		= 0x050000, 	 	/* 相似的元素,例如单元格 */LV_PART_TICKS		= 0x060000, 	 	/* 刻度 */LV_PART_CURSOR		= 0x070000, 	 	/* 光标 */
};/******** 设置事件				     ********/
//设置事件回调函数(需要设置的对象、事件回调函数、事件代码、传递数据)
lv_obj_add_event_cb(obj, event_cb, event_code, user_data);
//移除事件回调函数
lv_obj_remove_event_cb(obj,  event_cb);
//事件代码(在回调函数中判断事件类型、常用于两个两个事件调用同一个回调函数)
static void event_cb( lv_event_t *e )
{lv_event_code_t   code = lv_event_get_code(e);		 /* 第一步:获取事件类型 */if ( code == LV_EVENT_CLICKED )				 /* 第二步:判断事件类型 */{printf(“事件类型: 按下后释放\r\n”);	 		 /* 第三步:执行相应操作 */}else if ( code == LV_EVENT_LONG_PRESSED){printf(“事件类型:按下(长按)\r\n”);	}
}

3. 图解:

1719853395199
1719853423336
1719853435305
1719853371055

还有其他样式可以设置

1719853854078

2. 组件分类

  1. 基础组件

    • 标签(Label):用于显示文本信息。可以设置文本内容、字体、颜色等属性。
    lv_obj_t   *label  = lv_label_create(parent);//创建标签
    lv_label_set_text(label, "Hello World");//设置文本内容
    lv_label_set_style(label, &style);//设置样式
    // 设置标签字体库lv_obj_set_style_text_font(lab1, &my_fony_28, LV_STATE_DEFAULT);
    {//文本不存储在动态内存,而是在指定的缓冲区中(慎用)lv_label_set_text_static( label,"hallo" );
    }
    //设置格式化文本
    lv_label_set_text_fmt( label, “Value: %d”, 50 );
    
    • 按钮(Button):用户可与之交互的基本元素,例如点击按钮触发某个事件。
    • 开关(Switch):类似于按钮,但通常用于表示两种状态之间的切换(如开/关)。
    • 复选框(Checkbox):用户可以通过选中或取消选中来表示某个选项的状态。
  2. 输入组件

    • 文本框(Textbox):允许用户输入和编辑文本。
    • 键盘(Keyboard):通常与文本框配合使用,提供虚拟键盘以输入文本。
    • 下拉列表(Dropdown):显示一个下拉列表供用户选择。
    • 列表(List):显示多个项目供用户选择或查看。
  3. 指示组件

    • 进度条(Progressbar):用于显示某个任务或操作的进度。
    • 滑块(Slider):允许用户通过滑动来调整某个值或设置。
    • 滚轮(Scrollbar):通常与列表或文本框配合使用,用于滚动查看内容。
  4. 容器组件

    • 窗口(Window):可以包含其他组件并作为一个整体进行移动、缩放等操作。
    • 容器(Container):用于组织和管理其他组件的布局。
  5. 交互组件

    • 消息框(Messagebox):用于显示消息或提示用户进行操作。
    • 选项卡(Tab):允许用户在不同页面或选项之间进行切换。
    • 图片按钮(Image Button):使用图片作为按钮的显示内容。
  6. 特殊组件

    • 帧动画播放器(Frame Animation Player):用于播放由一系列图片组成的帧动画。

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

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

相关文章

Maven 笔记

开发工具:Maven相关内容笔记# Maven简介 Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)) 这玩意儿是使用Java开发的,所以采用的就是Java的思想:面向对象 POM (Project Object Model):项目对象模型Maven的作用:项目构建:提供标准的、…

202406月度小结

这个学期比上个学期有意思得多了。但是为什么我只写了6月小结,没有写3月4月5月小结呢?因为那时候还没有想到用博客写这种小结形式的随笔啦…… 横向对比,这四个月都挺有意思的。但是由于我太容易忘记事情了……我的记忆是有限的,先把6月发生的趣事赶紧记录下来比较好。 昨天…

大模型技术方向Task1笔记

赛题概要 一、赛事背景 在当今数字化时代,企业积累了丰富的对话数据,这些数据不仅是客户与企业之间交流的记录,更是隐藏着宝贵信息的宝库。在这个背景下,群聊对话分角色要素提取成为了企业营销和服务的一项重要策略。 群聊对话分角色要素提取的理念是基于企业对话数据的深度…

[LeetCode] 122. Best Time to Buy and Sell Stock II

medium是你的谎言. class Solution:def maxProfit(self, prices: List[int]) -> int:#1if len(prices) == 1:return 0#elsemax_profit = 0min_price = prices[0]for i, element in enumerate(prices):#find a min_price if element <= min_price:min_price = elementelse…

【esp32 学习笔记】esp-idf学会调用组件管理——以button

简单不看版——esp-idf组件管理步骤 在ESP-IDF 组件管理器网页(https://components.espressif.com/)搜索我们需要的组件,比如【button】,然后 点开相应的组件,比如 espressif/button 组件。 【关键步骤】复制相关组件界面上配置组件的命令 ,形如:idf.py add-dependency &…

idea创建javaweb项目

1.新建project项目 2.添加依赖<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>6.0.10</version> </dependency>…

Linguistics-English-Would, Should, and Could: How to Use Them Correctly

https://7esl.com/would-should-could/ Key Takeaways“Would” is used for hypotheticals and future possibilities that may not occur. “Should” implies advice, expectation, or probability. “Could” expresses past ability or present possibility.Home Knowled…

[LeetCode] 121. Best Time to Buy and Sell Stock

想清楚了确实算是简单题. class Solution:def maxProfit(self, prices: List[int]) -> int:#1if len(prices) == 1:return 0#elsemax_profit = 0min_price = prices[0]for i, element in enumerate(prices):if element <= min_price:min_price = elementelif element - m…

Druid数据库加密实现

Druid数据库连接池中的密码加密功能提供了以下几个主要好处: 增强安全性:最显著的好处是提高了数据库系统的安全性。明文存储数据库密码容易造成安全隐患,一旦配置文件泄露,数据库可能遭受未授权访问。通过加密数据库密码,即使配置文件落入未经授权的人员手中,他们也无法…

17-移动端适配

移动端适配01 单位的分类02 相对单位相对的对象 2.1 em 永远都是相对于自身的font-size <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, …

maven下载安装配置

Maven 是一款为 Java 项目管理构建、依赖管理的工具(软件),使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量。 Maven的两大核心作用: 1.依赖管理: Maven 可以管理项目的依赖,包括自动下载所需依赖库、自动下载依赖需要的依赖并且保证版本没有…

回溯

理论基础 什么是回溯法回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 在二叉树系列中,我们已经不止一次,提到了回溯,例如二叉树:以为使用了递归,其实还隐藏着回溯 (opens new window)。 回溯是递归的副产品,只要有递归就会有回溯。 所以以下讲解中,回溯函数也就是递…

day02 go的数据类型和运算符

day02 go的数据类型和运算符 前言动态语言类型 自动开辟数据空间,自动识别数据类型 python 静态语言类型 开辟内存空间,定义数据类型 c,java,gogo 语言中的数据类型 /*- go 基本数据类型:- 布尔类型- 数值类型- 整型 :- 有符号:int,int8,int16,int32,int64.- 无符号:ui…

16-视口的理解

视口的理解01 布局视口和视觉视口02 理想视口<meta name="viewport" content="width=device-width, initial-scale=1.0"> 通过width=device-width 即布局视口的宽度等于设备的宽度,以此来达到效果视口中的其它值

《痞子衡嵌入式半月刊》 第 103 期

痞子衡嵌入式半月刊: 第 103 期这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 :《…

EasyDesktop 浏览器书签管理从未如此简单

作为一名软件开发从业人员, 每天80%的时间都在与浏览器打交道, 一半的时间在用浏览器开发调试, 另一半时间则是在互联网上搜寻各种知识和资源. 为此, 我的浏览器书签栏存储和很多非常棒的链接, 多到2k屏幕分辨率下一栏都放不下, 为此我只好把这些书签的名称改的短一点, 这样就能…

docker基本介绍

虚拟机的部署形式 一个物理机可以部署多个app 每个app独立运行在一个VM虚拟机里面 依然部署很慢 迁移和扩展可以使用VM的克隆 每一个虚拟机都是一个完整的操作系统,虚拟机多的时候,操作系统本身资源也就被消耗过多 企业使用的虚拟化工具为:vmware esxi虚拟化工具 个人学习使…

新生题

MISC kongfu 用winhex打开压缩包,下拉到最后发现keybase64解密后发现是栅栏密码audio 打开发现是一个wav文件,用Audacity打开根据电平,得到01100010 01100001 01101011 01100100 01101111 01110010 二进制转字符进行md5加密Smtpbase64解码foremost 用foremost分解图片分解成…

STM32串口如何输出中文

当你想在串口调试助手实现换行功能时却不行时,试一试将\n改为\r\n 因为我用的是XCOM串口调试助手,就遇到了这样的问题 而当你加入int fputc(int ch, FILE *f)函数却实现不了printf,putchar调用时 需要加入#include<stdio.h>并勾选魔术棒中的Use MicroLIBint fputc(int…

DApp设计与开发 课程笔记(四):NFT交易市场合约

笔记对应课程内容为成都信息工程大学区块链产业学院老师梁培利的DApp 设计与开发 10-13 课 笔记中提到的名词不做过多解释 不懂就搜!开发准备:编辑IDE环境:Vscode+Hardhat 调试:Remix ERC标准智能合约生成巫师:https://docs.openzeppelin.com/contracts/5.x/wizard动手学 …