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

TouchGFX心得——画面控制的三种方式

[复制链接]
EPTmachine 发布时间:2025-10-8 15:59

TouchGFX设计交互界面的移动控件、交互动作以及界面操作时,可以通过内置的Interaction、添加控件虚函数搭配Intercation、周期回调函数三种方式实现界面的变化。

内置Interaction

TouchGFX界面设计时,可以在指定的屏幕中添加Interaction来实现界面控件事件的响应,同时TouchGFX内置多种响应事件供用户选择。根据添加事件的要求填写具体的控制参数,用户无需编写代码即可完成界面的交互设计。

Touch_Trigger_Route.png

上图中为使用内置的Interaction实现点击屏幕上的按钮完成屏幕切换,用户通过图形界面指定触发事件、触发源、触发动作、动作对象、动作参数以及触发名称快速完成切换屏幕的操作。

intercation.gif

使用内置的Interaction实现界面响应方便快捷,适合完成简单的画面动作。缺点是不够灵活,一次只能指定一个触发动作,难以应付复杂的界面设计需要。

添加控件虚函数搭配Intercation

在Intercation界面中,可以选择call virtual function添加用户自定义代码。在对话框中指定要实现的虚函数的函数名。

Interaction_call_virtual_function.png

在界面上添加一个隐藏的flexbutton并添加一个Intercation调用virtual function的事件。

Interaction_call_virtual_function_def.png

设定完成并生成代码,在工程文件夹的TouchGFX/generated/include/gui_generated/screen1_screen/Scree1ViewBase.hpp中可以看到添加的虚函数fucntion1

TouchGFX_Virtual_function.png

TouchGFX/gui/include/gui/screen1_screen/Screen1View.hpp中的Screen1View类中添加该虚函数的声明。

Screen1View_virtual_function.png

并在TouchGFX/gui/src/screen1_screen/Screen1View.cpp对该虚函数进行定义。在界面中添加一幅图片,在虚函数中实现对图片的移动动画,实现移动动画的代码如下。

void function1()
{
    image1.clearMoveAnimationEndedAction();
    image1.startMoveAnimation(237,15,60,touchgfx::EasingEquations::sineEaseOut,touchgfx::EasingEquations::sineEaseOut);
}

实际的运行效果如下。

virtualfunc.gif

HandleTickEvent

HaandelTickEvent是TouchGFX框架中的虚函数,以固定周期(一般每秒调用60次)在屏幕重绘时调用,用户通过对其进行重写,可以修改界面的响应的函数,对屏幕上的控件进行操作。上面的内置Intercation和调用virtual function都是基于事件驱动的一次性动作、使用HandleTickEvent可以实现循环检测,比如图片的不停移动。

使用HandleTickEvent进行编程,首先需要在屏幕对应的类中添加virtual void handleTickEvent()声明,比如TouchGFX/gui/include/gui/screen1_screen/Screen1View.hpp的Screen1View添加该函数的声明。

同时在对应的TouchGFX/gui/src/screen1_screen/Screen1View.cpp源文件中添加该函数的具体定义。以下为实现图片往复运动的代码,通过一个计数变量用于计算和管理每次调用Tick函数时图片的坐标,调用图片的设置位置函数来实现图片的运动。

void Screen1View::handleTickEvent()
{
    image1.invalidate();

    if(cntr<115)
    {
        image1.setX(cntr+50);
        cntr++;
    }
    else
    {
        cntr=0;
    }

    image1.invalidate();
}

handletick.gif

收藏 评论0 发布时间:2025-10-8 15:59

举报

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