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

这篇具有很好参考价值的文章主要介绍了使用GUI Guider工具开发嵌入式GUI应用(4)-使用image组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

引言

在没有使用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所示。
使用GUI Guider工具开发嵌入式GUI应用(4)-使用image组件,GUI,嵌入式硬件,嵌入式系统,GUI,LVGL

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

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

使用GUI Guider工具开发嵌入式GUI应用(4)-使用image组件,GUI,嵌入式硬件,嵌入式系统,GUI,LVGL

图x 在GUI Guider中导入图片

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

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

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

使用GUI Guider工具开发嵌入式GUI应用(4)-使用image组件,GUI,嵌入式硬件,嵌入式系统,GUI,LVGL

图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所示。

使用GUI Guider工具开发嵌入式GUI应用(4)-使用image组件,GUI,嵌入式硬件,嵌入式系统,GUI,LVGL

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

总结

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

(未完待续。。。)文章来源地址https://www.toymoban.com/news/detail-648994.html

到了这里,关于使用GUI Guider工具开发嵌入式GUI应用(4)-使用image组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【嵌入式】Linux开发工具arm-linux-gcc安装及使用

    宿主机 执行编译、链接嵌入式软件的计算机 目标机 运行嵌入式软件的硬件平台 “本地”编译器 用来生成在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,例如 Windows 环境生成 Windows 目标代码。 交叉编译器 用来生成在其它平台上运行的目标代

    2024年01月17日
    浏览(59)
  • 嵌入式软件开发常用的编辑代码工具、比较工具和测试工具的使用说明和操作步骤

    嵌入式软件开发常用的编辑代码工具有: Eclipse Eclipse是一款开源的集成开发环境,支持多种编程语言和插件,适用于多种嵌入式开发平台。以下是Eclipse的使用说明和操作步骤: 步骤1:创建新工程 单击“File”菜单,选择“New”→“Project”选项,选择工程类型和开发平台。

    2024年02月02日
    浏览(100)
  • 用ChatGPT做嵌入式应用开发

    ChatGPT是一种基于自然语言处理技术的人工智能模型,由OpenAI团队开发的。它基于大规模的语言数据集进行训练,并可以生成高质量的自然语言文本,包括对话、摘要、翻译等多种应用。 智能客服:可以根据用户提问,快速给出问题的答案和解决方案,提高客户满意度。 智能

    2023年04月26日
    浏览(55)
  • 嵌入式Linux应用开发笔记:串口

    串口(UART)是嵌入式设备中比较常用的功能。这篇文章将记录下应用程序中串口操作相关内容。 这篇文章中内容均在下面的开发板上进行测试: 《新唐NUC980使用记录:自制开发板(基于NUC980DK61YC)》 这篇文章是在下面文章基础上进行的: 《新唐NUC980使用记录(5.10.y内核)

    2024年02月09日
    浏览(50)
  • Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行

    GUI Guider是一个专门针对LVGL开发了一个上位机GUI设计工具,可以通过拖放控件的方式设计LVGL GUI页面,加速GUI的设计。设计完成的UI页面可以在PC上仿真运行,确认设计完毕之后可以生成C代码,再整合到MCU项目中。 1.1 创建工程 打开GUI-Guider,选择自己要使用的LVGL版本,V7或者

    2024年03月19日
    浏览(52)
  • 嵌入式设备应用开发(发现需求和提升价值)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         很多做技术的同学,都会陷入到技术的窠臼之中。对于如何做具体的产品、实现具体的技术,他们可能很感兴趣。但是做出来的东西做什么用,或者说是有没有竞争力,事实上他们不

    2024年02月11日
    浏览(49)
  • ESP32 移植 AWTK(嵌入式GUI库)

    最近了解到有一个叫AWTK的嵌入式GUI库,是ZLG(周立功)开发的一个开源免费可商用的嵌入式GUI库。手头上刚好有一个自己最近设计的ESP32测试板,型号是ESP32_WROOM_32,和一个0.96寸80x160的TFT屏,就想着能不能把这个AWTK库移植到ESP32上玩一下。于是,我又开始给自己挖坑了。 这次移

    2024年01月22日
    浏览(73)
  • AI嵌入式全景:各厂商、系列和开发工具的综合概览

    要看几个方面 1 算力 : 2 支持何种模型 : 3 是否支持可视化的窗口系统 : 一般而言各个平台均采用linux操作系统,官方提供对应SDK,安装好后可使用硬件加速资源。 而且如果要使用其硬件加速,一般都要完成模型转换,将模型转为该平台所特有的格式。平台的SDK会提供转换

    2024年02月11日
    浏览(42)
  • 【嵌入式开发工具】STM32+Keil实现软件工程搭建与开发调试

    本篇文章介绍了使用Keil来对STM32F103C8芯片进行初始工程搭建,以及开发与工程调试的完整过程,帮助读者能够在实战中体会到Keil这个开发环境的使用方法,了解一个嵌入式工程从无到有的过程,并且具备快速搭建一个全新芯片对应最小软件工程的基本能力思路。文章首先介绍

    2024年02月05日
    浏览(66)
  • rust嵌入式开发之基于await构造应用级临界区

    在rust嵌入式开发之await一文中我们讨论了如何用await来实现异步操作的串行化。而并发编程时还有一个更重要的问题需要我们解决:资源竞争。 针对并发时的资源竞争,最简单的办法就是利用系统提供的临界区机制来互斥的使用资源。嵌入式rust提供了critical-section来提供临界

    2024年04月17日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包