你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】stm32基于TouchGFX的GUI开发(二):简单动画实现(Animated Image)

[复制链接]
STMCU小助手 发布时间:2022-3-11 21:57
一、GUI设计
1、界面布局

按照下图添加三个控件,分别是1、Button,2、Image,3、Animated Image。
其中Button添加不同相应状态的图片,Image 添加背景图片作为整个屏幕的背景,添加方法在上一节有介绍,在这就不做赘述。

三个控件的属性:
1、 Name:btn_start_stop
       Location X:175 Y200

2、 Name:background
       Location X:0 Y 0

3、 Name:animation
       Location X:160 Y 20

_7VV%5_QAI}GRT5N]2V00RN.png

2、添加Animated Image 图片
第一步:导入图片资源。按照下图所示添加。

ISN(MGHH[0%~46D1RLJZCAA.png

第二步:给Animated控件指定动态图片的起始图片、以及下一张图片显示时间。
这里设置没一帧间隔30ms。不同间隔显示速度不同,有兴趣可以自己尝试下。

}49K7L7[{}{8W1Y)9PVZ[)9.png

3、添加按钮文本资源
按照下图步骤依次更改,其中第5步 GB目录下面显示的是当选择ResourceID是分别对应的显示在Button上的字符。

Z{YZ[4D}49Y]ZT0A7}H@3C9.png

4、添加交互
1、给Button添加Interactions
其中Actions选择Execute C++ Code,,表示单机这个Button执行下面的C++代码

B22F1UCV3T0I)0EJO9]OV[J.png

C++代码如下

  1. if (animation.isAnimatedImageRunning())
  2. {
  3.     animation.pauseAnimation();//暂停动画
  4.     btn_start_stop.setLabelText(TypedText(T_START));//设置butto
  5.                                                                                                     //的文本为start
  6. }
  7. else
  8. {
  9.         //开始动画
  10.     animation.startAnimation(animation.isReverse(), false, true);
  11.    //设置button文本为stop
  12.     btn_start_stop.setLabelText(TypedText(T_STOP));
  13. }

复制代码

为animated image 添加interactions

%QX)~{%HEE25B6CUSOKW9.png

同样也要执行C++代码

  1. //animation.isReverse() 判断是否是暂停状态
  2. animation.startAnimation(!animation.isReverse(), false, true);
复制代码

二、仿真运行
MainViewBase.hpp 文件会生成两个回调函数:
1、void buttonCallbackHandler(const touchgfx::AbstractButton& src);
2、void animationEndedCallbackHandler(const touchgfx::AnimatedImage& src);
其具体实现方法在MainViewBase.cpp。可以看到我们在touchGFX添加的C++代码自动生成到这两个回调函数中。

  1. /*********************************************************************************/
  2. /********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
  3. /*********************************************************************************/
  4. #ifndef MAINVIEWBASE_HPP
  5. #define MAINVIEWBASE_HPP

  6. #include <gui/common/FrontendApplication.hpp>
  7. #include <mvp/View.hpp>
  8. #include <gui/main_screen/MainPresenter.hpp>
  9. #include <touchgfx/widgets/Box.hpp>
  10. #include <touchgfx/widgets/Image.hpp>
  11. #include <touchgfx/widgets/AnimatedImage.hpp>
  12. #include <touchgfx/widgets/ButtonWithLabel.hpp>

  13. class MainViewBase : public touchgfx::View<MainPresenter>
  14. {
  15. public:
  16.     MainViewBase();
  17.     virtual ~MainViewBase() {}
  18.     virtual void setupScreen();

  19. protected:
  20.     FrontendApplication& application() {
  21.         return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
  22.     }

  23.     /*
  24.      * Member Declarations
  25.      */
  26.     touchgfx::Box __background;
  27.     touchgfx::Image background;
  28.     touchgfx::AnimatedImage animation;
  29.     touchgfx::ButtonWithLabel btn_start_stop;

  30. private:

  31.     /*
  32.      * Callback Declarations
  33.      */
  34.     touchgfx::Callback<MainViewBase, const touchgfx::AbstractButton&> buttonCallback;
  35.     touchgfx::Callback<MainViewBase, const touchgfx::AnimatedImage&> animationEndedCallback;

  36.     /*
  37.      * Callback Handler Declarations
  38.      */
  39.      //TouchGFX自动生成
  40.     void buttonCallbackHandler(const touchgfx::AbstractButton& src);
  41.     void animationEndedCallbackHandler(const touchgfx::AnimatedImage& src);

  42. };

  43. #endif // MAINVIEWBASE_HPP

复制代码

如果不知道Animated Image有哪些方法和属性,可以在MainviewBase.hpp包含的头文件里找到引用的对应的头文件,右键打开即可找到Animated image的类文件,其中包含了Animated Image所有的方法和属性。


收藏 评论0 发布时间:2022-3-11 21:57

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版