TouchGFX基础:再谈中文显示

有关在touchgfx中显示中文的基本介绍,请见之前的文章:TouchGFX基础:显示中文。

本文将介绍如何加入用户自己的字体,比如下面这个效果:


图一


图二

这是 STM32F746G-DISCO 开发板的效果。之前的文章都是基于 F769I-DISCO 板子的,本文章开始,将在 STM32F746G-DISCO 板子上实验,主要原因是746板子的显示部分只用到LTDC接口,相比769板子的DSI+LTDC接口要简单的多,便于后续对touchgfx代码实现的分析。

好,下面来看看如何在板子上实现启功先生的“启体”。首先要获得字体文件,就是称为TrueType的字体文件,后缀名为.ttf。网上有ttf字体下载地址,比如《字体下载 - 中文字体下载 - 启功字体简体下载》,从下载的包里解压出ttf文件:FZQiTi-S14S.TTF,好神秘的名字,估计是“方正启体”的意思。为了使用这个新字体,有两种方法,一种是把字体文件加入到windows 10系统中,即copy ttf文件到 C:\Windows\Fonts 目录下,相当于为系统安装了新字体;还有一种方法是,新字体只提供给touchgfx使用。我们使用第二种方法。

使用 Touchgfx Designer 新建一个针对 STM32F746G-DISCO 板子的应用,选择 STM32F746G Discovery Kit :


图三

这里有个小问题,关于746板子的配置模板有1.0和2.0两个版本,系统默认显示的是1.0版本的,它们的区别是2.0版本能自动生成STM32CUBE的配置文件、方便后续使用CUBE来对MUC进行配置,所以我们要选择2.0的模板来使用。点击上图中的 i 符号:


图四

点击下拉框,选择v2.0.0:


图五

保持默认的空白画布(Blank UI):

图六

添加一个 Box 控件、修改成纯蓝的背景色:


图七

添加一行纯白色的文字:


图八

看过之前关于字体配置文章的读者知道,上面的中文是否能正确显示、按什么字体显示,是取决于默认的名为 Large 的”字体类“中选择了什么样的字体(Font):


图九

当前选择的字体是Verdana,这是个西文字体,不支持中文的。我们需要把”启体“字体文件装载到当前工程中。先Ctrl+S、保存当前工程,然后将之前下载好的字体文件 FZQiTi-S14S.TTF copy到当前工程的 fonts 目录下:


图十

然后,点击 Large 条目的 Font 下拉框,查找  FZQiTi-S14S 字体名称,但是F开头的字体名称中没有我们新加入的字体:


图十一

可以这样理解,Touchgfx Designer 貌似不能动态感知到我们已经为工程添加了一个新字体文件。关闭Touchgfx Designer、重新启动,再来检查字体:


图十二

新字体ok了!回到主界面,测试用的那一行中文也变成新的字体了:


图十三

生成代码,运行模拟器:


图十四

运行结果正确!回到设计界面,修改成2行文字:


图十五

再次生成代码、运行模拟器,得到正确结果(截图略)。进入IAR,编译、可以正确生成hex目标文件:


图十六

烧写,出错了:


图十七


图十八

提示信息说的是,片外flash(起始地址为0x9000 0000)无法烧写。这是因为IAR中默认的烧写配置文件不对(整个IAR工程是Touchgfx Designer 自动生成的,不知道为什么有这个问题),问题容易解决,IAR里安装的烧写文件是直接支持 STM32F746G-DISCO 板子的(769I板子就没这么幸运了!)。在IAR工程选项窗口中,更换烧写配置文件:


图十九

点击 ”...“ 按钮,在弹出窗口中选择 FlashSTM32F7xx_STM32F746G-DISCO.board :


图二十

再次烧写,成功:


图二十一

板子运行情况:


图二十二

小结:

1、为了正确显示中文,需要装载对应的字体 .ttf 文件,copy到工程对应的fonts目录下。

2、重启动Designer、使新字体生效。

3、IAR烧写hex文件时,需要正确配置烧写文件。


下一篇文章将介绍如何通过freeRTOS任务传递消息实现MCU控制功能,敬请期待!

你可能感兴趣的:(TouchGFX基础:再谈中文显示)