没有合适的资源?快使用搜索试试~ 我知道了~
LVGL库入门教程02-基本控件与交互.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 199 浏览量
2022-07-13
12:06:58
上传
评论
收藏 613KB DOC 举报
温馨提示
试读
13页
LVGL库入门教程02-基本控件与交互.doc
资源推荐
资源详情
资源评论
LVGL 库入门教程 02-基本控件与交互
LVGL 本质上是一个 GUI 库,它包含大量的控件(widget),即按钮、标签、滑块、菜单
栏这种具有一定人机交互特征的组合图形。LVGL 在设计时,采用了一定面向对象编程的
设计思路,有效降低了代码编写的难度。
LVGL 和大多数 GUI 库的工作方式都是类似的,其代码编写的基础思路为:
创建 GUI 根窗体对象
在窗体上绘制各种控件
为控件编写响应函数函数
在主事件循环中等待用户触发事件响应
如果之前有 GUI 库的使用经验的话,应该可以比较容易明白 LVGL 代码的编写思路。
标签
标签(label)应该是 GUI 最简单也是最基础的控件之一。标签的作用就是显示一小段说明
文字。接下来通过介绍标签来介绍 LVGL 控件的创建、布局与设置属性。
标签的创建
通过以下函数可以创建一个标签:
lv_obj_t* lv_label_create(lv_obj_t* parent);
lv_obj_t 是 LVGL 所有控件的通用类型,包括根窗体在内的所有控件都使用该结构描述。
参数 parent 指定了标签需要被放在哪一个父容器中。由于一个较大的项目内会存在许多
控件,因此往往需要将一个较大的窗口划分为若干结构,每一个结构放入用途相似的的控件,
使用户更易熟悉如何操作。例如,一个文本编辑器窗口可能会按功能分为顶层菜单栏、侧边
导航栏、底部状态栏以及中间的编辑区,每个区域的控件都可以安排在各栏内统一调整。
最基本的父容器就是整个显示屏窗口对象,可以使用 lv_scr_act() 函数获取当前的窗口对
象。操作系统上的窗口可以设置一些属性,例如窗口大小、标题文字、图标等,不过嵌入式
屏幕往往是固定的,因此窗口对象一般只作控件的父容器使用。
使用以下代码就可以在当前窗口中创建一个标签了:
lv_obj_t* label01 = lv_label_create(lv_scr_act());
创建得到的标签没有任何可显示的内容,可以调用 lv_label_set_text() 为标签添加上文字:
lv_label_set_text(label01, “Hello, world!”);
这样就可以在屏幕中显示一些文本了。LVGL 支持直接显示 Unicode 文字,只要在源文
件使用 UTF-8 编码即可。如果要显示变量的值,LVGL 也提供了 lv_label_set_text_fmt()
函数,可以直接格式化文本。
接下来编译工程并下载,就可以看到显示的效果了:
标签的布局
以上创建的标签默认放在屏幕的左上角,并且如果创建多个标签等控件,它们都会被重叠
放置在左上角。如果需要将控件安排到合适的位置,就需要安排它们的布局。一般情况下,
可以用以下函数重新调整一个控件的布局:
void lv_obj_align(lv_obj_t* obj, lv_align_t align, lv_coord_t x_ofs, lv_coord_t y_ofs);
align 指定了控件的对齐方式,可以检查枚举类型 lv_align_t 来获取支持的对齐方式。x_ofs
和 y_ofs 是对齐后的额外偏移量,正值表示额外向右下偏移。
LVGL 包含了许多枚举类型,如果不知道该如何传值,可以查看头文件包含的枚举值。
和大多数 GUI 库一样,屏幕的左上角为坐标原点 (0, 0) ,往右为 x 轴正向,往下为 y
轴正向,坐标的单位为像素或分辨率。
例如,如果额外给以上标签添加对齐:
lv_obj_align(label01, LV_ALIGN_CENTER, 0, -30);
那么它就会出现在屏幕中间向上 30 像素的位置:
如果要创建更灵活的布局,可以使用 lv_obj_create() 创建一个基本对象。这种直接创建
的基本对象一般用作框架,然后通过嵌套框架的形式组织对齐,例如:
/* outer widget align */
lv_obj_t* cont_top = lv_obj_create(lv_scr_act());
lv_obj_t* cont_bottom = lv_obj_create(lv_scr_act());
lv_obj_align(cont_top, LV_ALIGN_TOP_LEFT, 0, 0);
lv_obj_align(cont_bottom, LV_ALIGN_BOTTOM_RIGHT, 0, 0);
/* inner widget align */
lv_obj_t* label_top = lv_label_create(cont_top);
lv_label_set_text(label_top, “At Top Left”);
lv_obj_align(label_top, LV_ALIGN_CENTER, 0, 0);
lv_obj_t* label_bottom = lv_label_create(cont_bottom);
lv_label_set_text(label_bottom, “At Bottom Right”);
lv_obj_align(label_bottom, LV_ALIGN_CENTER, 0, 0);
这里先将外层的框架在屏幕上对齐,然后再在框内创建标签,让标签在框架内对齐。效果
为:
剩余12页未读,继续阅读
资源评论
书博教育
- 粉丝: 1
- 资源: 2835
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功