stm32 TouchGFX基础教程(七)使用通配符

很多情况下我们都需要在程序运行的时候动态地改变显示的文本,前面一节说过,touchgfx所有需要显示的文本都需要放在文本资源管理器中,如果要显示-50~100的温度,那就需要提前在文本资源管理器中填好150个文本?这样做显然不合理,touchgfx给出的解决方案是使用通配符<>
通配符和C语言的printf函数中的格式控制符有类似的效果,比如

printf("the temperature is %d",temperature);

与之等价的touchgfx实现是:

the the temperature is <any_words>
//相当于printf中的%d,尖括号中的单词随便写,也可以不写,这只是用来方便理解的

C语言可以直接更新变量的值,然后用变量的值取代格式控制符的位置。但是Touchgfx的处理机制有点不一样,它需要我们手动设置一个缓冲buffer,通过向这个buffer里写数据来改变通配符所代表的值。
具体来看一个示例:
1、构建如图所示的界面,添加两个交互:
stm32 TouchGFX基础教程(七)使用通配符_第1张图片
添加Text Area控件,在右侧属性栏更改Text内容和选用大号字体样式:
stm32 TouchGFX基础教程(七)使用通配符_第2张图片
添加buffer,初始值随便填,buffer大小>=所需字符数+1,假如要显示最多需要3个字符,则buffer填4即可,多的一个字符是用来存放 ‘\0’ 的。
stm32 TouchGFX基础教程(七)使用通配符_第3张图片
2、在文本资源管理器的Pypographies里,在大号字体样式一栏填好通配符需要用到的字符,由于温度范围是-40~100,所以通配符需要用到的字符是0123456789-:stm32 TouchGFX基础教程(七)使用通配符_第4张图片
3、在VS中添加代码:stm32 TouchGFX基础教程(七)使用通配符_第5张图片
stm32 TouchGFX基础教程(七)使用通配符_第6张图片
至于为什么我知道buffer在程序中的名字是textArea1Buffer,因为所有在Touchgfx Designer中做的设置,绝大部分都会被放在ViewBase类里面,我就是在Screen1ViewBase.hpp里面找到的。
box1是Box控件填充的白色,用来作背景的,大家可以试一下不加box1.invalidate()是什么效果。仿真的结果是下面这样子:
stm32 TouchGFX基础教程(七)使用通配符_第7张图片

-------------------------------下面是我的小广告----------------------------------------------
在这里插入图片描述
淘宝小店:芯视界touchgfx

你可能感兴趣的:(stm32 TouchGFX基础教程(七)使用通配符)