0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式GUI“美容”小技巧:让小身板的MCU,也可以有个俊模样的界面设计!

NXP客栈 来源:未知 2023-05-19 10:55 次阅读

在本文中,小编用“小身板”和“俊模样”来指代一个带有图形用户界面的系统的两个方面。“小身板”是指相对有限的MCU资源,例如:相对较低的主频、相对较少的存储资源、没有专门的LCD显示控制器、较低的显示接口速度等等;而“俊模样”是指对用户友好,漂亮且富于吸引力的图形界面,就如同男生的帅、女生的美。

男生的帅和女生的美,除了与天生的基因有关,外在的修饰也同样必不可少。俗话说,人靠衣裳马靠鞍,衣裳和鞍都是外部的修饰,都是实现美好事物所需要的资源。

由此及彼,一个“俊模样”的GUI设计,同样对资源有比较高的要求。这些资源包括主频、Flash和RAM以及美工设计等等。那么,是不是“小身板”就不能有“俊模样”呢?

不是的!如同一个优秀的化妆师可以用卓越的手段实现美,嵌入式工程师也可以通过各种手段进行资源优化,力争让“小身板”的MCU也能实现“俊模样”的界面设计。

对GUI设计进行资源优化的路很漫长,涉及的方面很多,需要我们不断发现,不断思考。小编在这里通过一些示例和大家分享如何使用Slider对某一类动画进行存储资源优化。

我们在生活中经常会见到这样一类应用,如下图所示:

347420da-f5ef-11ed-90ce-dac502259ad0.png

通过观察我们发现,尽管上面的图形元素,外观各异、形状各异,但是都可以被抽象为两个部分:静态部分和动态部分。比如,咖啡液位,由静态的杯子和动态的咖啡组成;温度计由静态的玻璃容器和动态的水银组成。

我们再看看GUI设计中经常使用到的控件——Slider,其典型结构如下图所示。这是一个典型的Slider控件,由静态的背景 (main) 和动态的指示器 (Indicator) 以及调节点 (Knob) 组成。

348125c8-f5ef-11ed-90ce-dac502259ad0.png

LVGL中,设置样式的函数名都是以lv_obj开始,例如:

  • lv_obj_set_style_bg_color

  • lv_obj_set_style_bg_opa

  • lv_obj_set_style_bg_img_src

可见,样式是针对所有控件的父对象而言的。换句话说,我们既可以通过lv_obj_set_style_bg_img_src为Slider控件的背景、指示器和调节点设置图片样式,也可以通过lv_obj_set_style_bg_opa将Slider控件的背景、指示器和调节点的透明度设置为0从而达到隐藏Slider控件相应组成部分的目的。

接下来,我们看看如何使用Slider实现咖啡液位变化的动画效果。

首先,通过美工设计,将咖啡液位的图分解为两部分,杯子和咖啡,并将它们分别作为Slider的背景部分和指示器部分,同时隐藏Slider的调节点部分,如下面的简图所示。

3487f998-f5ef-11ed-90ce-dac502259ad0.png

咖啡液位的分解及与Slider的对应关系

完成上面的工作之后,后面的工作就是为Slider创建动画,并在动画的回调函数中周期性地调用lv_slider_set_value函数以改变Slider指示器的值,从而实现咖啡液位变化的效果。

看到这里,大家会问了,你讲这么多,和存储资源优化有什么关系吗?大家请想想看,通常我们如何实现这样的动画效果?大致如下图所示,将咖啡液位变化的动画分解为若干不同液位的静态图片,然后,每隔一个时间间隔播放一张图片。时间间隔越短,图片数量越多,动画的效果越流畅。但是,图片数量越多,需要的存储资源越多。

但是,使用上面的方法,实现相同的动画效果,只需要两张图片即可,节约存储资源。

3492c9cc-f5ef-11ed-90ce-dac502259ad0.png

那么,最后总结一下,有两点与大家分享:

01

前面的三个显示应用,可以抽象出共同的特性。那就是,它们都可以清晰地剥离出静态部分和动态部分。动态部分都具有有限的变化范围,也就是具有一个起始值和结束值。比如,咖啡液位总是在最低液位和最高液位之间变化;又比如,温度计显示的温度值也总是在最低温度和最高温度之间变化。那么,对于这类应用,就可以用Slider实现。

每一种显示动画的方法,都有适用范围,没有好坏之分。我们只有为自己的显示应用选择合适的方案,才能最大限度地优化存储资源。

02

一点GUI动画显示的心得体会,与大家分享,欢迎各位大神指导。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NXP
    NXP
    +关注

    关注

    60

    文章

    1215

    浏览量

    177298

原文标题:嵌入式GUI“美容”小技巧:让小身板的MCU,也可以有个俊模样的界面设计!

文章出处:【微信号:NXP客栈,微信公众号:NXP客栈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式热门发展方向哪些?

    已经体现了嵌入式系统的优势;在信息家电领域,冰箱、空调等的网络化、智能化将引领人们的生活步入一崭新的空间,即使你不在家里,可以通过电话线、网络进行远程控制,在这些设备中,
    发表于 04-11 14:17

    嵌入式GUI开发特训营”开营啦!是学霸就有奖拿,快来挑战一下!

    分分钟与高手并肩! 说到嵌入式GUI,那可真是有太多的东西可以聊。在此开启一个系列话题,讲述NXP的嵌入式图形世界。今天为大家带来第一讲:NXP图形策略及
    的头像 发表于 12-07 10:55 724次阅读
    “<b class='flag-5'>嵌入式</b><b class='flag-5'>GUI</b>开发特训营”开营啦!是学霸就有奖拿,快来挑战一下!

    谁说单片机不能图形编程,介绍MCU的TOP 5图形GUI库!

    LittlevGL(LVGL) 是一款开源的嵌入式图形用户界面GUI)库,专为嵌入式系统设计。LVGL以其轻量级、灵活性和强大的功能而备受开发者青睐,资源够的情况下可移植到所有
    的头像 发表于 12-07 10:42 3008次阅读
    谁说单片机不能图形编程,介绍<b class='flag-5'>MCU</b>的TOP 5图形<b class='flag-5'>GUI</b>库!

    嵌入式GUI特训营』开营啦!是学霸就有奖拿,快来挑战一下!

    “同是嵌入式GUI设计 为什么别人做起来 轻松、快捷,很炫酷 而我的设计却 费力、耗时,有点low…“ 不要焦虑! 加入恩智浦 “ 嵌入式GUI特训营 ” 让你的
    的头像 发表于 12-01 09:15 207次阅读
    『<b class='flag-5'>嵌入式</b><b class='flag-5'>GUI</b>特训营』开营啦!是学霸就有奖拿,快来挑战一下!

    python如何打开gui界面

    在Python中打开GUI界面可以使用多种库或框架,如Tkinter、PyQt、wxPython等。下面将详细介绍如何使用Tkinter创建一个GUI
    的头像 发表于 11-22 14:12 458次阅读

    嵌入式智能家居终端人机界面设计与实现

    电子发烧友网站提供《嵌入式智能家居终端人机界面设计与实现.zip》资料免费下载
    发表于 11-17 10:18 0次下载
    <b class='flag-5'>嵌入式</b>智能家居终端人机<b class='flag-5'>界面设计</b>与实现

    如何可以应用TouchGFX进行人机界面设计

    产品中会用到人机界面电容触摸屏。 想请教,如何应用TouchGFX进行界面设计,完成比较好看的人机交互界面,是工业数据采集方面的应用。
    发表于 10-24 06:26

    基于嵌入式QT的数字机顶盒图形界面设计与实现

    电子发烧友网站提供《基于嵌入式QT的数字机顶盒图形界面设计与实现.pdf》资料免费下载
    发表于 10-18 10:51 0次下载
    基于<b class='flag-5'>嵌入式</b>QT的数字机顶盒图形<b class='flag-5'>界面设计</b>与实现

    什么是嵌入式Linux?

    Linux到底是什么呢? 嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。简单来说,是除了电脑之外可以运行程序的设备,将CPU嵌入
    发表于 10-11 13:47

    从事嵌入式工作哪些优势?

    。 那么从事嵌入式工作哪些优势? 一是工作强度相对较低。开发企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一用户的,而且每个用户的需求和完成时间都不同,开发人员往往疲于奔命,重复劳动
    发表于 10-08 15:05

    嵌入式新手应该怎么学?

    的,对体积,功耗,成本等等严格要求的一计算机系统。看起来是很复杂的,其实我们来总结一下就是两点: 第一,嵌入式系统是一计算机系统 第二,嵌入
    发表于 09-08 10:22

    使用GUI Guider工具开发嵌入式GUI应用(3)

    本节讲述在GUI Guider中,应用各种UI的基本元素,并顺利部署到MCU的过程。在GUI Guider中使用各LVGL的组件时,将会涉及到GUI Guider的操作,以及将某些组件
    的头像 发表于 08-16 14:39 1537次阅读
    使用<b class='flag-5'>GUI</b> Guider工具开发<b class='flag-5'>嵌入式</b><b class='flag-5'>GUI</b>应用(3)

    使用GUI Guider工具开发嵌入式GUI应用(2)

    GUI Guider本质上是一个方便嵌入式开发者基于LVGL开发GUI应用的源码生成器工具,其作用是帮助开发者生成LVGL的应用源码,GUI Guider最终生成的源码将要被部署到具体
    的头像 发表于 08-16 14:36 2170次阅读
    使用<b class='flag-5'>GUI</b> Guider工具开发<b class='flag-5'>嵌入式</b><b class='flag-5'>GUI</b>应用(2)

    使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1)

    LVGL是一个开源免费(MIT许可)的嵌入式GUI组件,支持触摸屏操作,移植简单方便,开发者一直在不断完善更新。
    的头像 发表于 08-16 14:29 1565次阅读
    使用<b class='flag-5'>GUI</b> Guider工具在<b class='flag-5'>MCU</b>上开发<b class='flag-5'>嵌入式</b><b class='flag-5'>GUI</b>应用 (1)

    PX5的ARM TrustZone支持嵌入式系统变得更加安全!

    产品安全性。PX5 RTOS对ARM TrustZone的支持嵌入式开发者能够从物理层降低网络安全风险。 PX5的CEO William Lamie表示:“基于MCU的产品如今已是生活中不可缺少的一部分
    发表于 05-18 13:44