立即注册 找回密码

微雪课堂

搜索

6.TouchGFX界面应用之定时器机制

2019-11-4 18:21| 发布者: Ezio_神仙醋| 查看: 7137| 评论: 1

摘要: 在TouchGFX有一个类似于滴答定时器的函数,handleTickEvent()。这一节我们使用handleTickEvent函数让图形动起来。在形状中找圆,设置圆画板大小为500X500,起点坐标为260,50,圆心在画板坐标的250,250,设置圆弧的开 ...
在TouchGFX有一个类似于滴答定时器的函数,handleTickEvent()。
这一节我们使用handleTickEvent函数让图形动起来。

在形状中找圆,设置圆画板大小为500X500,起点坐标为260,50,圆心在画板坐标的250,250,设置圆弧的开始角度和终止进度,设置圆弧的半径和圆弧线的宽度(0表示全部填充),这样这个圆弧就创建好了,


我们再在圆弧的外面画一个完整的圆

生成代码,在Screen2View.hpp的Screen2View中加入两个变量和handleTickEvent函数,声明这个函数后,在程序执行时,会自动定时调用或者函数。

在Screen2View.cpp中定义这个函数,设置圆弧的开始和终止角度,每次加6度,一圈是360度正好加60次结束,连续起来就感觉在转圈圈,在Screen2View构造函数里面赋初值。


circle1.setArc为设置圆弧的角度,函数原型如下,

运行模拟器,查看效果。然后编译下载到开发板,

我们还可以添加文字来显示他转了多少圈,先添加一个文本框,取消自动设置大小,文本款尽量拉大一点防止数据显示不完整,设置字体居中,显示设置通配符,设置buff长度10个字节。



添加显示代码,显示minute的值,没有添加数据溢出处理
Unicode::snprintf(textArea1Buffer, TEXTAREA1_SIZE,"%d", minute);
textArea1.invalidate();

运行测试如下,发现与预期不符。

那是因为我们没有添加通配符范围,在修改字体的地方添加通配符范围。

重新生成代码,编译烧录。

这样是不是感觉有点单调,那好可以再加一个圆弧,设置成红色初始角度


void Screen2View::handleTickEvent()
{
count++;
if(count >= 60){
count = 0;
minute++;
Unicode::snprintf(textArea1Buffer, TEXTAREA1_SIZE,"%d", minute);
textArea1.invalidate();
}
circle1.invalidate();
circle1.setArc(count * 6, count * 6 + 30);
circle1.invalidate();
circle_Red.invalidate();
circle_Red.setArc(count * 6 + 180, count * 6 + 30 + 180);
circle_Red.invalidate();
}
编译下载就可以看到两个圆弧对立转

.

166

顶一下

刚表态过的朋友 (166 人)

发表评论

最新评论

引用 游客 2020-6-2 15:09
“ Unicode::snprintf(textArea1Buffer, TEXTAREA1_SIZE, "%d", minute);  textArea1.invalidate();”这两条语句在TouchGFX4.12.3版本里会报错,至于怎么解决就需要你打开“Screen2ViewBase.hpp"为可读写,添加一个头文件"#include <touchgfx/widgets/TextAreaWithWildcard.hpp>",就完美解决

查看全部评论(1)

微雪官网|产品资料|手机版|小黑屋|微雪课堂. ( 粤ICP备05067009号 )

GMT+8, 2024-3-29 06:51 , Processed in 0.015337 second(s), 16 queries .