文章目录

  • 1 前言
  • 2 官方链接
  • 3 官方demo
  • 4 代码--示例调整
    • 4.1原版demo
    • 4.2 修改尺寸
    • 4.3 内容居左
    • 4.4 容器不随内容拓展
  • 5 小结

1 前言

官方demo的img中使用到cont,简单了解一下。

2 官方链接

lua img:https://doc.openluat.com/wiki/21?wiki_page_id=2571
在查看img的示例的时候,发现通过符号文字显示图片的demo无法正常运行。

symble = {"\xef\x80\x81", "\xef\x80\x88", "\xef\x80\x8b", "\xef\x80\x8c","\xef\x80\x8d", "\xef\x80\x91", "\xef\x80\x93", "\xef\x80\x95","\xef\x80\x99", "\xef\x80\x9c", "\xef\x80\xa1", "\xef\x80\xa6","\xef\x80\xa7", "\xef\x80\xa8", "\xef\x80\xbe", "\xef\x8C\x84","\xef\x81\x88", "\xef\x81\x8b", "\xef\x81\x8c", "\xef\x81\x8d","\xef\x81\x91", "\xef\x81\x92", "\xef\x81\x93", "\xef\x81\x94","\xef\x81\xa7", "\xef\x81\xa8", "\xef\x81\xae", "\xef\x81\xb0","\xef\x81\xb1", "\xef\x81\xb4", "\xef\x81\xb7", "\xef\x81\xb8","\xef\x81\xb9", "\xef\x81\xbb", "\xef\x82\x93", "\xef\x82\x95","\xef\x83\x84", "\xef\x83\x85", "\xef\x83\x87", "\xef\x83\xa7","\xef\x83\xAA", "\xef\x83\xb3", "\xef\x84\x9c", "\xef\x84\xa4","\xef\x85\x9b", "\xef\x87\xab", "\xef\x89\x80", "\xef\x89\x81","\xef\x89\x82", "\xef\x89\x83", "\xef\x89\x84", "\xef\x8a\x87","\xef\x8a\x93", "\xef\x8B\xAD", "\xef\x95\x9A", "\xef\x9F\x82",
}local img = lvgl.img_create(cont, nil)
lvgl.cont_set_layout(cont, lvgl.LAYOUT_GRID)
for i=1, #symble doimg = lvgl.img_create(cont, nil)lvgl.img_set_src(img, symble[i])
end

这里是因为cont没有初始化,而图片是放在cont中。注意依赖关系

3 官方demo

https://gitee.com/openLuat/LuatOS/tree/master/demo/lvgl/win32/lvgl_demo_test
注意,这里的示例较全,但是也需要结合自己的屏幕看着调整。

local cont_demo = {}function cont_demo.demo()local cont;cont = lvgl.cont_create(lvgl.scr_act(), nil);lvgl.obj_set_auto_realign(cont, true);                    --Auto realign when the size changes*/lvgl.obj_align_origo(cont, nil, lvgl.ALIGN_CENTER, 0, 0);  --This parametrs will be sued when realigned*/lvgl.cont_set_fit(cont, lvgl.FIT_TIGHT);lvgl.cont_set_layout(cont, lvgl.LAYOUT_COLUMN_MID);local label;label = lvgl.label_create(cont, nil);lvgl.label_set_text(label, "Short text");sys.wait(500)label = lvgl.label_create(cont, nil);lvgl.label_set_text(label, "It is a long text");sys.wait(500)label = lvgl.label_create(cont, nil);lvgl.label_set_text(label, "Here is an even longer text");
endreturn cont_demo

4 代码–示例调整

我的开发板是合宙esp32 c3,屏幕是st7735,相关示例可以查看我lua专栏下的。

4.1原版demo

-- 注意需要自己先执行lvgl.init()
function cont()-- 初始化容器cont,无法设置长宽?--{local contcont = lvgl.cont_create(lvgl.scr_act(), nil)--lvgl.obj_set_size(cont,128,160)lvgl.obj_set_auto_realign(cont, true)                    --Auto realign when the size changes*/lvgl.obj_align_origo(cont, nil, lvgl.ALIGN_CENTER, 0, 0)  --This parametrs will be sued when realigned*/lvgl.cont_set_fit(cont, lvgl.FIT_TIGHT)     --此时cont依据内容拓展,容易左右超过界限-- lvgl.cont_set_fit(cont, lvgl.FIT_NONE)   --此时cont未设置自适应状态,则内容在cont中lvgl.cont_set_layout(cont, lvgl.LAYOUT_COLUMN_MID)--字符布局居中-- lvgl.cont_set_layout(cont, lvgl.LAYOUT_COLUMN_LEFT) --布局靠左--}--创建标签labellocal label = lvgl.label_create(cont, nil)lvgl.label_set_text(label, "Short text")log.info("scr_load",lvgl.scr_load(cont))     --显示   容器sys.wait(500)label = lvgl.label_create(cont, nil)lvgl.label_set_text(label, "It is a long text")sys.wait(500)label = lvgl.label_create(cont, nil)lvgl.label_set_text(label, "Here is an even longer text")
end

显示如下

显示状态

  1. 容器(边框的蓝色部分)随着显示内容而扩大。原因:设置了lvgl.cont_set_fit(cont,== lvgl.FIT_TIGHT==)
  2. 显示的字符居中。原因:设置了居中lvgl.cont_set_layout(cont, lvgl.LAYOUT_COLUMN_MID)
  3. 容器的尺寸未设定。

4.2 修改尺寸

lvgl.obj_set_size(cont,128,160)
尺寸未生效,和上图一致

4.3 内容居左

这里是容器cont中的字符居左。
lvgl.cont_set_layout(cont, lvgl.LAYOUT_COLUMN_LEFT)

4.4 容器不随内容拓展

lvgl.cont_set_fit(cont, lvgl.FIT_NONE)

这时候显示的内容不超过容器cont,但是有部分字符丢失。这是因为我的屏幕尺寸有限,设置的cont的大小。
目前没有找到合适的方法去自动换行。

这些格式在luat_lv_enum.h文件中,路径如下:
https://gitee.com/openLuat/LuatOS/blob/master/components/lvgl/gen/luat_lv_enum.h

5 小结

本章简单介绍了容器的使用,先创建一个容器,然后为其贴上标签label,设置label的显示内容。

【Lua-lvgl】3.容器cont相关推荐

  1. LVGL lv_cont 容器(8)

    lv_cont lv_cont作用是用来解决变化的子对象布局问题,比如父对象中的子对象增加或者减少时原先的布局为了美观其他子对象位置可能需要改变,手动调用lv_set_pos比较繁琐.所以lv_con ...

  2. 【Luat-air551G】5 用lvgl显示GGA数据

    代码 tag_uart = "test5_uart"id = 1 len = 1024get_gga_time = 2000data_time = "" dat ...

  3. 编写高性能的 Lua 代码

    原文出处: wuzhiwei 的博客   欢迎分享原创到伯乐头条 前言 Lua是一门以其性能著称的脚本语言,被广泛应用在很多方面,尤其是游戏.像<魔兽世界>的插件,手机游戏<大掌门& ...

  4. 【C++ STL学习笔记】C++ STL序列式容器(array,vector,deque,list)

    文章目录 C++ STL容器是什么? 迭代器是什么,C++ STL迭代器(iterator)用法详解 迭代器类别 迭代器的定义方式 C++序列式容器(STL序列式容器)是什么 容器中常见的函数成员 C ...

  5. STL 中priority_queue小结

    (1)为了运用priority_queue,你必须包含头文件<queue>:#include<queue>    (2)在头文件中priority_queue定义如下: nam ...

  6. 5.Docker之镜像的使用

    镜像充当容器的模板,没有镜像容器就无法运行,在Java面向对象中,存在着类与对象,对象是依靠类实例化,而镜像和容器就类似这样的关系. 1.查看镜像列表 可以通过docker images查看本地所有的 ...

  7. ulua、tolua原理解析

    在聊ulua.tolua之前,我们先来看看Unity热更新相关知识. 什么是热更新 举例来说: 游戏上线后,玩家下载第一个版本(70M左右或者更大),在运营的过程中,如果需要更换UI显示,或者修改游戏 ...

  8. 前端实例——明日方舟PRTS时装回廊

    一.目标对象 链接:https://prts.wiki/w/%E6%97%B6%E8%A3%85%E5%9B%9E%E5%BB%8A 明日方舟PRTS时装回廊 二.分析 该元素在z轴上可分为两层 底层 ...

  9. APISIX插件开发

    说明 只需要操作两个容器 a. gateway(镜像如:apache/apisix:2.14.1-alpine) b. dashboard(镜像如:apache/apisix-dashboard:2. ...

最新文章

  1. 解决VS2013卡顿现象,很有用
  2. MKNetWorkKit打印URL
  3. iframe 页面刷新
  4. 广东外语外贸大学计算机考研,广东外语外贸考研难度,2021考研广东外语外贸大学MTI会挤破头很难吗?...
  5. matlab的三维伪彩图,matlab画等高线伪彩图
  6. 媒体服务器协议,媒体服务器介绍(mediactrl架构)
  7. CSS基础「二」复合选择器 / 元素显示模式 / 背景 / 三大特性
  8. android 5.0 新功能,android5.0新特性
  9. 应用性能调优分析与总结
  10. 诺贝尔奖发了120年,钱怎么越花越多?
  11. 提升 JavaScript 技能的5个小技巧,新手小白值得学习!
  12. 新浪微博分享 小记!!!(尚未成功)
  13. PDF Suite Pro(PDF全能工具箱电脑版)官方正式版V19.0.22 | 含ocr文字识别软件 | pdf全能工具箱怎么样?
  14. 计算机专业会涉及数学吗,数学不好的人还适合学计算机吗?
  15. mybatisplus where或and后面的条件用括号括起来
  16. c#Ulong用一个高位Uint和低位Uint表示
  17. SLF4J日志框架在项目中使用
  18. ubuntu18.04安装roboware studio
  19. 啊啊啊~~~~~ Ajax
  20. 波特Baud、码元、比特bit三者关系+ Byte、bps、Bps

热门文章

  1. 转载 学写钢笔字应该注意些什么
  2. 如何通过3个月自学成为网络安全工程师!
  3. Arduino云植物自动浇水
  4. 特征值特征向量和奇异值分解精彩片段汇总
  5. 支付宝调起支付时显示的商家别名如何修改?
  6. 安装ArcGIS10.2,localhost没有有效的许可管理器的解决办法
  7. 夕阳西下,小卤蛋和妲己姐姐竟然手牵手讨论Spring...
  8. pytest之Monkeypatching(猴子补丁)
  9. 《FLUENT 14.0超级学习手册》——第1章 流体力学与计算流体力学基础1.1 流体力学基础...
  10. 修复共享服务器,集群服务器共享磁盘柜的修复案例