电子发烧友 电子发烧友
  • 首页
  • 技术
    可编程逻辑
    MEMS/传感技术
    嵌入式技术
    模拟技术
    控制/MCU
    处理器/DSP
    存储技术
    EMC/EMI设计
    电源/新能源
    测量仪表
    制造/封装
    RF/无线
    接口/总线/驱动
    EDA/IC设计
    光电显示
    连接器
    PCB设计
    LEDs
    汽车电子
    医疗电子
    人工智能
    可穿戴设备
    军用/航空电子
    工业控制
    触控感测
    智能电网
    音视频及家电
    通信网络
    机器人
    vr|ar|虚拟现实
    安全设备/系统
    移动通信
    便携设备
    物联网
    区块链
    HarmonyOS
    RISC-V MCU
    光伏
    ChatGPT
    IGBT
    充电桩
    氮化镓
    BLDC
    逆变器
    5G
    电机控制
  • 资源
    技术文库
    新品速递
    电路图
    元器件知识
    电子百科
    最新技术文章
  • 下载
    在线工具
    常用软件
    电子书
    datasheet
  • 专栏
    电子说
    专栏
  • 社区
    论坛
    问答
    小组
    技术专栏
    社区之星
    试用中心
    HarmonyOS技术社区
    2023电子工程师大会
  • 研究院
  • 活动
    设计大赛
    硬创大赛
    社区活动
    线下会议
    在线研讨会
    小测验
  • 学院
    直播
    课程
  • 视频
  • 企业号
  • 华秋智造
  • 工具
    PCB在线检查
    datasheet查询
    选型替代查询
    免费样品申请
    免费评测试用
    工程师专区
    技术子站
0
  • 聊天消息
  • 系统消息
  • 评论与回复
查看更多
查看更多
查看更多
  • 0

    关注
  • 0

    粉丝
  • 0

    动态
  • 个人中心
  • 内容管理
  • 积分兑换
    当前积分:
  • 修改资料
  • 退出登录
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
下载中心
  • 推荐
  • 分类
  • 资料
  • 软件
  • 工具
  • 排行榜
  • DataSheet

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

3天内不再提示

实战经验 | STM32GUI TouchGFX 屏幕切换功能简介

STM32单片机 来源:未知 2023-11-09 10:05 次阅读


关键词:GUI,TouchGFX,Transition


目录预览

1、引言

2、TouchGFX屏幕切换功能

3、小结


01

引言


TouchGFX 是专用于 STM32 的图形界面设计软件,可基于低成本开发优秀的图形界面,而且它已变的越来越流行。为了帮助客户更加深入地理解和使用 TouchGFX ,本文针对TouchGFX 屏幕切换的实现方式进行了介绍。通过简析基本例程“Transition Example”的源码,剖析其中切屏实现的流程;并简介了如何使用 TouchGFX Designer 快捷地修改屏幕切换模式,希望能帮助客户更好地使用 TouchGFX 切屏特色与功能。


02

TouchGFX屏幕切换功能


2.1. TouchGFX Transition 类介绍


TouchGFX 框架中关于屏幕切换功能,实现了一个 Transition 基类和五个派生类,其关系如下图图 1 所示。其中,Transition 是切屏的抽象基类,定义了屏幕切换期间发生的基本事务。虚函数主要包括:Init(初始化)、 tearDown(销毁,切屏完成需要的清理过程)、handle TickEvent(Tick 事件处理函数,主要用于完成切屏的动画效果)、invalidate(失效,用于重绘)等。五个派生类,其中 NoTransition 是最基本的派生类,它没有任何视觉效果,当前屏幕会直接被新屏内容替换。另外四个派生类则具有动画效果:BlockTransition、CoverTransition、SlideTransition 和 WipeTransition。


图1.TouchGFX Transition 类继承关系


BlockTransition 将屏幕分成 8x6 份块,在屏幕切换时会每次随机重绘其中的 2 个块,比较节省 MCU 资源,适合性能不高的 MCU;CoverTransition 的动画效果是“新屏画面从一个方向移动过来,直至完全覆盖原屏幕内容”;SlideTransition 的动画效果是“新屏与原屏拼接在一起,(原屏在前,新屏在后)从指定的方向滑过来”;WipeTransition 的动画效果是“新屏内容从一个方向展开(有一种擦除原屏,露出新屏的效果)”。BlockTransition、CoverTransition、SlideTransition 和 WipeTransition 均在 handleTickEvent 函数中实现各自风格的动画效果,tearDown 函数中则销毁切屏过程中创建的用于动画的临时快照控件等。下面我们首先生成Transition 例程,并对例程源码相关部分做进一步的分析。


2.2. TouchGFX Transition 例程


运行 TouchGFX Designer,选择 Examples;通过 Select Board Setup 选择 STM32H73 5G DK 板(也可以是 TouchGFX 适用的其它板件);从众多例程中选择“Transition Example”例程;将 Appl ication name 改为 Transition_Example,如下图图 2 所示,然后点击 Create 创建工程。


图2.TouchGFX Designer 生成 Transition Example 例程


进入 TouchGFX Designer 主界面后,会看到画布上有四个方向按钮和一个背景图片,如下 图图 3 所示。我们对界面不做更改,直接选择 Designer 右下角 (Run Target)在目标板上运行。该操作将会复制 TouchGFX 框架文件,生成配置文件、makefile、代码及资源文件(images、fonts、texts),然后编译链接、烧录目标板并运行。程序运行起来后,您可以熟悉一下该例程应用,该应用有 5 个屏幕画面,一个主屏及上下左右 4 个屏幕。点击方向按钮会进行相关方向的切屏。例程中切屏方式是 SlideTransition 模式。下面我们解读一下相关代码,再对Transition 模式进行修改。


图3.TouchGFX Designer Transition Example 设计界面


2.3. 例程代码解读与切屏模式修改


2.3.1. 关键代码流程


切屏操作是由点击按钮触发的,我们以右向按钮 为例,一步步查看调用过程。首先我们可以确定当前屏幕是 MainView 类,MainView 继承自 MainViewBase,该 MainViewBase 由Designer 自动生成。它已经包含了四个按钮、一个背景框和一个背景图片。按钮点击的处理函数为 buttonCallb ackHandler。详细代码如下:



我们再来看该按钮处理函数,这里右向按钮调用了 application 对象的gotoRightScreenSlideTransitionEast 函数:



在 FrontendApplicationBase 中,gotoRightScreenSlideTransitionEast 接口通过transitionCallback 跳转到 gotoRightScreenSlideTransitionEastImpl 函数。具体过程,首先application 事务处理过程中会调用 handlePendingScreenTransition,再转至函数evaluatePendingScreenTransition,经 transitionCallback 完成对函数gotoRightScreenSlideTransitionEastImpl 的调用(更多的关于 Callback 的介绍请参阅相关文档或 LAT)。如下图图 4 所示:


图4.Transition Callback 的应用过程


具体代码如下:



函数 gotoRightScreenSlideTransitionEastImpl 中调用了屏幕切换的关键模板函数makeTransition。


2.3.2. 模板函数 makeTransition


下面我们来看一看实现屏幕切换功能的关键模板函数 makeTransition。该函数在MVPApplication.hpp 中,源码如下:



我们知道 TouchGFX 应用架构是 MVP 架构(这里不做过多介绍,需要了解的客户请参考相关文档),这里的 makeTransition 函数将 TouchGFX 应用中的 View&Presenter 和 model 绑定,并与 transition 联系在一起,进而实现切屏功能。具体来说,首先 prepareTransition 函数对当前的 View/Presenter/Transition 进行销毁;然后以模板 参数 touchgfx::SlideTransition(用户指定的方向)创建 Transition 派生类对象;以模板参数 ScreenType 类进行新 View 的创建(这里是 RighView);再以模板参数 PresenterType 类创建新的 Presenter(这里是RightPresenter)。将 Presenter 与 Model 绑定并将 View 与 Presenter 绑定(以保证可以正常调用各自接口,实现 MVP 架构功能);最后调用 finalizeTransition 函数,在 finalizeTransition 中进行新 View 的 SetupScreen,绑定新 Transition, 并激活新 Transition。


2.3.3. Transition 动画效果的实现


具体的 Transition 动画效果是在 Transition 派生类的 handleTickEvent 中实现的。我们例程中是 SlideTransition,其 handleTickEvent 中实现了滑动的效果。将原有屏幕的快照,在滑动方向的来向上与新 View 的快照连接,一起沿滑动方向移动,实现动画效果。具体请见下面handleTickEvent 函数源码:



2.3.4. Transition 风格的修改


模板配合 C++ 编程给予了 TouchGFX 框架极大的简洁性和适配的便利性,对于切屏风格的增加或修改也是非常的简便。客户甚至不需要理解前面介绍的 Transition 具体原理,也能够非常方便地修改切屏模式。使用 TouchGFX Designer,仅需点击几下鼠标即可实现。如下图图 5 所示,这里我们在关联右向按钮的 Interaction 中,将 Transition 模式改为了 Wipe 模式,编译运行即可查看效果。


图5.TouchGFX Designer Transition 模式的修改


03

小结


TouchGFX 是针对 STM32 产品的专用优秀界面设计工具,功能强大易用。本文对屏幕切换功能进行了简介,从基本示例“Transition Example”出发,对切屏部分的源代码进行了浅析,并介绍了如何使用 TouchGFX Designer 实现切屏模式的修改。希望本文能够帮助客户更深入地理解 STM32 TouchGFX。



完整内容请点击“阅读原文” 下载原文档。



原文标题:实战经验 | STM32GUI TouchGFX 屏幕切换功能简介

文章出处:【微信公众号:STM32 单片机】欢迎添加关注!文章转载请注明出处。

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

    关注

    6004

    文章

    44010

    浏览量

    621753
  • STM32
    STM32
    +关注

    关注

    2242

    文章

    10679

    浏览量

    349154

原文标题:实战经验 | STM32GUI TouchGFX 屏幕切换功能简介

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    TouchGFX G0设备如何使用物理按键切换页面?

    我使用STM32 G070RBT6 + 320*240的SPI屏幕(无触摸),想通过按键切换页面,在TouchGFX中可以设置使用外部按键按下作为触发,但是我不知道我程序中在哪里告诉
    发表于 04-09 07:13

    实战经验 | 移植 SBSFU 到 STM32G070 的过程

    使用 STM32G070RBT6 给海外用户开发产品,由于当地新需求,产品需要增加安全启动的功能。但是由于 X-Cube-SBSFU 包提供的示例中,只有基于 STM32G071 的示例。客户因此询问该怎么移植。本文
    的头像 发表于 12-08 18:20 445次阅读

    实战经验 | TouchGFX 控件附加 ClickListener 功能的方法介绍

    Designer 中的 Mixin 功能,从基础示例 Button Example 出发,为文本框控件添加 ClickListener (Mixin 功能中的一项),并对源代码进行简单剖析。期望能帮助客户更深入地理解 STM32
    的头像 发表于 11-17 17:40 649次阅读

    TouchGFX从旧版本更新到新版本的方法

    X-CUBE-TOUCHGFXSTM32Cube 生态系统的一个软件包,它包含以下组件:TouchGFX Designer,TouchGFX Generator 和
    的头像 发表于 11-01 17:15 631次阅读
    <b class='flag-5'>TouchGFX</b>从旧版本更新到新版本的方法

    实战经验 | TouchGFX从旧版本更新到新版本的方法

    TouchGFX 不断进行软件版本更新,其提供的功能也越来越丰富,有些新的功能只有更新的版本才有,所以很多时候会面临将旧版本的 TouchGFX 迁移到更新版本的问题。在创建
    的头像 发表于 11-01 17:15 416次阅读

    如何添加触摸屏驱动到TouchGFX中?

    使用STM32CubeMX移植TouchGFX 一文中介绍了如何用TouchGFX点亮屏幕,但是此时屏幕还没有触摸的
    的头像 发表于 10-09 14:41 1115次阅读

    STM32+TouchGFX方案—助你快速创建出色的图形界面

    STM32CubeMX配置工具及初始化代码生成器协同操作,为无缝开发GUI和主应用程序创建一个统一的项目环境。为了帮助图形设计项目顺利运行,STM32CubeMX增加了新功能,包括帮
    发表于 09-20 06:32

    STM32GUI使用TouchGFX动态图片功能实现动态更换表盘背景功能

    电子发烧友网站提供《STM32GUI使用TouchGFX动态图片功能实现动态更换表盘背景功能.pdf》资料免费下载
    发表于 09-19 16:54 5次下载
    <b class='flag-5'>STM32GUI</b>使用<b class='flag-5'>TouchGFX</b>动态图片<b class='flag-5'>功能</b>实现动态更换表盘背景<b class='flag-5'>功能</b>

    STM32GUI使用TouchGFX二进制字体(Binary Font)功能实现字体动态更新

    电子发烧友网站提供《STM32GUI使用TouchGFX二进制字体(Binary Font)功能实现字体动态更新.pdf》资料免费下载
    发表于 09-19 16:53 3次下载
    <b class='flag-5'>STM32GUI</b>使用<b class='flag-5'>TouchGFX</b>二进制字体(Binary Font)<b class='flag-5'>功能</b>实现字体动态更新

    TouchGFX中Callback模板实现原理

    TouchGFX 为 MCU 带来了炫彩丰富的 GUI 界面,使得基于 STM32 芯片的人机界面开发非常方便而友好,比如可以在 TouchGFX Designer 中创建一个按键,在
    发表于 09-11 06:16

    基于STM32CubeMX的GUI应用开发

    TouchGFX提供了可视化GUI开发方法。方便快速实现GUI效果。• STM32CubeMX提供了软件工程的生成能力,开发者能够根据目标板,选择相应的
    发表于 09-08 07:54

    TouchGFX4.2x新功能

    内容包含:美观/统一/友好的人机交互产品提升用户体验、典型的嵌入式图形系统、助力GUI人机交互的产品升级、STM32产品线支持HMI开发的产品组合-概述、TouchGFX GUI软件库
    发表于 09-05 06:00

    Top和Block实战经验以及DDR接口时序

    IO约束在顶层和模块级的主要命令都是以下几个,但是实际应用的复杂程度不可同日而语,本篇会先介绍模块级IO约束实战经验,然后讲解顶层IO约束复杂性,过程中会介绍DDR接口时序。
    的头像 发表于 06-27 15:07 612次阅读
    Top和Block<b class='flag-5'>实战经验</b>以及DDR接口时序

    GUI系列课程上新 | STM32 GUI开发技能分享

    X-Cube-TouchGFX GUI开发实践》系列课程的第7章节。该章节内容将分享STM32 GUI的开发技能,帮助大家迅速掌握开发技巧,加快开发速度,创造出更多界面友好美观的嵌入
    的头像 发表于 06-03 08:30 888次阅读
    <b class='flag-5'>GUI</b>系列课程上新 | <b class='flag-5'>STM32</b> <b class='flag-5'>GUI</b>开发技能分享

    TouchGFX界面开发:TouchGFX软件安装

    TouchGFX和STemWin类似,都是一个GUI框架,可以方便的在STM32 Cortex-M4 以及更高级别的STM32芯片上创建GUI
    的头像 发表于 05-29 10:08 1107次阅读
    <b class='flag-5'>TouchGFX</b>界面开发:<b class='flag-5'>TouchGFX</b>软件安装

    精选推荐

    更多
    • 文章
    • 资料
    • 帖子
    • 扬兴 石英晶体振荡器,频点20MHz,工作电压3.3V,应用于伺服电机

      扬兴科技
      14小时前
      646 阅读
    • 一文读懂 | 新能源汽车车载OBC

      贞光科技
      15小时前
      261 阅读
    • 快速判断出485从站设备是否支持MODBUS RTU无线通讯

      达泰电子
      14小时前
      715 阅读
    • 鸿蒙开发接口Ability框架:【(AbilityDelegator)】

      jf_46214456
      14小时前
      350 阅读
    • TVS二极管选型需要掌握的动态电阻RDYN的计算方法

      硬件那点事儿
      15小时前
      299 阅读
    • SOPC Builder中文版简介

      狂信徒
      174 KB
      免费
      0下载
    • 继电器电路设计全集

      yezi888
      2.03 MB
      免费
      2853下载
    • STC89C52单片机详细介绍

      lanlanw
      60.4 KB
      免费
      2076下载
    • 可穿戴示波器手表设计电路(详细)

      黄博
      200KB
      8积分
      241下载
    • Irrduino基于Arduino灌溉控制系统

      张桂兰
      0.85 MB
      免费
      3下载
    • 推荐!DC-DC电路如何应用前馈电容?

      远风
      1天前
      318 阅读
    • 精选推荐!紫光盘古系列FPGA开发板信息汇总

      ElecFans小喇叭
      1月前
      584 阅读
    • 精选推荐!看大佬用树莓派4做个迷你版PS5

      他在笑
      1天前
      321 阅读
    • 会员风采!华秋电子——致力于“为电子产业增效降本”的数字化智造平台

      ElecFans小喇叭
      1天前
      349 阅读
    • 【Vision Board创客营连载体验】RA8D1-Vision Board上OSPI-Flash实践

      h1654155872.5480
      3天前
      544 阅读

    推荐专栏

    更多

      资讯网网站建设规划方案模板seo查询工具多少钱学网站ui设计阿迦贝尔品牌养生仪器恋爱大赢家复兴之路观后感800字潮牌店铺取名起名大全东莞网站建设方案bt电影天堂午夜福利网站建设申请周易八字算命入门知识非法吸收公众存款公司营销网站seo推广长沙网站设计公司排名暴走恐怖恐怖故事dw制作简单网站seo就业待遇怎么样女生服装品牌起名史小坑的恶梦破解版噶尔网站建设企业墙绘设计网站福州网站站建设女生网名气质大型的建设网站公司姓贾的女生起名qq三国工匠眉山网站建设价格五行属水的怎样起名佳木斯建设网站得过且过意思少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

      资讯网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化