使用GUI Guider工具开发嵌入式GUI应用(4)-使用image组件

news2024/12/22 23:33:58

使用GUI Guider工具开发嵌入式GUI应用(4)-使用image组件

文章目录

  • 使用GUI Guider工具开发嵌入式GUI应用(4)-使用image组件
    • 引言
    • 在GUI Guider中创建image组件绑定图片
    • 在Keil工程中部署、编译和下载
    • 总结

引言

在没有使用LVGL和GUI Guider的时候,我想做一个电子相册的小应用,需要在MCU工程中集成一个小型的文件系统和图像解码组件,例如fatfs(http://elm-chan.org/fsw/ff/00index_e.html)组件和tjpgdec(http://elm-chan.org/fsw/tjpgd/00index.html)组件。使用GUI Guider显示图片就不需要这么麻烦,可以使用image组件,在PC上完成图片的解码,然后通过常规的部署流程,将包含图片的程序下载到开发板后,在开发板上的显示屏上显示图片。二者的不同之处在于:使用MCU解码相对灵活,以文件方式存放图片,可以在运行时通过更换存储介质的方式,替换显示的内容;使用GUI Guider的image组件将需要显示的图片预先解析成像素数组,只能是固定的内容,并且预先占用了程序存储空间。对于简单的应用,使用GUI Guider的image组件,对开发者更方便。

在GUI Guider中创建image组件绑定图片

GUI Guider向开发者提供了image组件,可用于向UI显示页面中添加图片。此时,开发者可将图片文件导入到GUI Guider中,GUI Guider会自行对图片解码,生成对应的像素数组,可以直接参与到Keil工程的编译过程中。

当需要为某个页面添加一个图片的对象时,可在编辑区域左边的工具栏中选择image按钮,此时,在组件窗口中就可以看到,当前的页面screen下出现了一个img_1的对象。如图x所示。
在这里插入图片描述

图x 在GUI Guider中新增Image组件对象

然后,可在编辑框右侧的的属性菜单页中指定电脑上的一张图片,就能在编译页面中显示图片,此时,可以使用鼠标拖拽图片的位置,缩放大小等。如图x所示。

在这里插入图片描述

图x 在GUI Guider中导入图片

在这一步要特别注意,图片文件名不能有“-”符号,使用常用字母、数字和下划线构成文件名即可。

在Keil工程中部署、编译和下载

然后,单击生成代码按钮,重新生成项目源文件。此时,在.\gui\generated\images目录下会生成一个新文件_img1_alpha_180x239.c,这个文件里保存了新增图片对应的像素数组。需要将这个文件添加到Keil工程中,如图x所示。注意,这个C源文件的文件名包含了源图片的文件名和像素信息,每次在GUI Guider中调整图片对象时,导致这些属性发生变化,对应产生的文件名也会变化,每当C源文件名发生变化时,就需要重新在Keil工程中添加源文件。

在这里插入图片描述

图x 新增Image对象的像素数组及源文件

这里还有一个小细节,因为将当前显示页面的字体从32号改成了16号,之前框架工程中的lv_font_montserraMedium_32.c文件也自动移除了,此时,可以在Keil工程中人工移除不能再包含的文件。

通过编译消息输出可以看到,新增图片之后,代码的增量还是很多的。

Build started: Project: project
*** Using Compiler 'V6.18', folder: 'C:\Keil_v5\ARM\ARMCLANG\Bin'
Build target 'Target 1'
compiling setup_scr_screen.c...
compiling events_init.c...
compiling lv_font_montserratMedium_16.c...
compiling lv_table.c...
compiling gui_guider.c...
compiling setup_scr_screen.c...
compiling lv_textarea.c...
compiling _img1_alpha_180x239.c...
linking...
Program Size: Code=154728 RO-data=164328 RW-data=148 ZI-data=29104  
".\Objects\project.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:14

其中RO-data部分从64380激增到了164328,多用了将近100KB的存储资源用于保存图片的像素数组。

下载程序到MCU开发板并运行,可以看到,开发板的显示屏上也成功显示了“同款”图像。如图x所示。

在这里插入图片描述

图x 在开发板上运行UI显示Image对象

总结

本节介绍了使用GUI Guider的image组件,实现在开发板上的显示屏上显示图片的过程。使用image组件显示图片,应用过程非常简洁,但需要将图片的显示内容预先转换成像素数组,可能会占用很大的程序存储空间。从GUI Guider配置image属性的标签页中看到,image组件还可以导入外部的图片资源,或许可以从MCU外接的存储设备(例如SD卡)中导入图片文件,这个功能可以在后续调试过程中尝试一下,将有助于缓解MCU自带flash存储空间受限的压力。

(未完待续。。。)

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

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

相关文章

【一场专属于开发者的盛会!】------NPCon2023 AI模型技术与应用峰会(北京站)

2023年8月12日,由CSDN官方举办的2023年-NPCon2023 AI模型技术与应用峰会(北京站)在北京格兰云天大酒店荣重召开! 话不多说!上图~~~ 目录 【会议展望】 【大咖宣讲】 【CSDN活动介绍】 【开谈环节,我有句话说】 【现场人气】…

linux 查看文件被那个进程所调用

使用lsof 命令 显示文件被哪个进程所占用 lsof /var/log/messagesCOMMAND:进程的名称PID:进程标识符USER:进程所有者FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等TYPE:文件类型&#…

uni——初次加载问题处理(赋值后再调用)

案例描述 此案例中 一进页面接收good_id并调用接口,这个流程正常。 这个changeNum也是一进页面就触发了(组件购物车加减自带),且触发的顺序在onload赋值id之前,这时候good_id还是为空,所以接口报错。如何处…

AMD fTPM RNG的BUG使得Linus Torvalds不满

导读因为在 Ryzen 系统上对内核造成了困扰,Linus Torvalds 最近在邮件列表中表达了对 AMD fTPM 硬件随机数生成器的不满,并提出了禁用该功能的建议。 因为在 Ryzen 系统上对内核造成了困扰,Linus Torvalds 最近在邮件列表中表达了对 AMD fTPM…

第4章 微服务框架主体搭建

mini商城第4章 微服务框架主体搭建 一、课题 框架搭建 二、回顾 1、整体业务功能分析 2、根据业务需求设计表结构及字段 三、目标 1、版本控制器的搭建使用 2、能独立自主的搭建微服务框架 3、学会考虑一些公共的工具组件 4、网关模块的应用 四、内容 第1章 版本控…

nodejs+vue+elementui电影订票网站系统_wqc3k

电影订票系统在国内有很多值得借鉴的例子,功能也都趋于完善,因此此次电影订票系统将轻量化开发,要完成以下功能: (1)要支持完整的用户注册,登录功能,账号的管理通过管理员来实现。 &…

推断统计中非参数检验之卡方检验、列联表分析和游程检验

一、(卡方检验):赛马比赛的赛道会影响成绩吗 这里以一个实例赛马比赛的赛道是否会影响成绩为例,实际就是检验获胜频数与期望频数之间有无显著性差异。 import pandas as pdstep1 调用包 from scipy.stats import chisquare impor…

上市公司-企业声誉得分和评级测算(2000-2021年)

一、数据介绍 数据名称:上市公司-企业声誉得分和评级测算 数据年份:2000-2021年 数据样本:50235条 数据来源:自主整理 二、参考文献 参考文献: 管考磊,张蕊.企业声誉与盈余管理:有效契约观还是寻租观[J].会计研…

隧道HTTP优化程序示例

作为专业爬虫程序员,我们经常需要使用代理服务器处理大量的请求。但是,单一服务器往往无法承担高并发请求和HTTPS加密的压力,这时候我们可以利用CDN来优化性能,并实现反向代理和HTTPS加速。下面,让我们一步步来了解。 …

集简云推出的全国第一款 AI+连接器解决方案产品语聚AI

语聚AI是集简云推出的全国第一款 AI连接器解决方案产品,官网:https://yuju.jijyun.cn 语聚AI包括了多个不同的AI功能,协助企业和个人更好的使用AI语言模型所带来的能力,包括: 应用助手 希望通过AI智能助手帮助您查询C…

【vue3】点击按钮弹出卡片,点击卡片中的取消按钮取消弹出的卡片(附代码)

实现思路: 在按钮上绑定一个点击事件,默认是true;在export default { }中注册变量给卡片标签用v-if判断是否要显示卡片,ture则显示;在卡片里面写好你想要展示的数据;给卡片添加一个取消按钮,绑…

分享个试卷去笔迹什么软件,几个步骤轻松擦除

试卷擦去笔迹是一项非常关键的技能,它可以帮助你更好地管理你的笔记和文件。不管是小伙伴们想重新测试试卷或者是将试卷输出为电子版,都可以实现的。在这篇文章中,我将分享一些方法和软件,帮助你更好地进行试卷擦除。有需要的小伙…

极狐GitLab 上新:跳过无需备份项目,节约数 10 至 1000 倍时间与磁盘空间

目录 复习一下:简单高效的数据备份恢复 Get 新功能,跳过无需备份的项目,让磁盘空间“大瘦身” 💡 最近,极狐GitLab 推送了最新的 16.2 版本,本文将详解新功能之「在备份时跳过项目」,即在备份…

OKCC在系统安全方面做了哪些措施?

语音通信行业,运营者普遍比较关心的问题是,运营风险如何控制?运营安全如何保证?OKCC呼叫中心又有那些风控措施来保证运营安全。 当前阶段,语音通信运营,最主要的风险主要包括以下几个方面: 一、…

怎么入门PLC?

一.基础很重要。只有打好基础,才能学好PLC。 1.首先,我们应该了解电气原理图。电路图是发展的基础。由于PLC可以取代继电器和接触器控制,必须了解相应的基本电路原理! 2.了解PLC的基本结构和动作原理。 既然你想学习PLC技术&am…

想学好网络技术,这一张纸就够了

大家好,我是老杨。 马上又到一年一度的大学新生入学季,今年更多家长都给孩子们报了计算机相关专业。 要知道啊,这个计算机专业包含的方向贼多,什么网络工程、软件工程、信息安全、物联网工程、传感网技术、通信工程与电子信息之…

TiDB v7.1.0 跨业务系统多租户解决方案

本文介绍了 TiDB 数据库的资源管控技术,并通过业务测试验证了效果。资源管控技术旨在解决多业务共用一个集群时的资源隔离和负载问题,通过资源组概念,可以限制不同业务的计算和 I/O 资源,实现资源隔离和优先级调度,提高…

LAXCUS和GPU软硬件结合,构建强大算力生态

随着科技的不断进步,计算机技术已经渗透到我们生活的方方面面。其中,GPU(图形处理器)作为一种强大的计算设备,已经成为了人工智能、大数据、云计算等领域的核心硬件之一。然而,传统操作系统都是单机系统,只能在一台计算…

哈威比例多路阀控制放大器

多路比例阀放大器控制负载敏感原理的比例多路换向阀,它用于与负载无关的、无级调节液压执行元件的运动速度。 多个执行元件可以同时和相互无关地进行工作。 这种类型的阀主要用于行走液压机械(例如:起重控制系统)。 通过选择执行元…