在工作中使用了emWin在之后除了画图之外,另一个就是汉字库的使用了,这个可是非常吃空间的,用了就理解了。在这里主要教大家如何生成汉字库以及显示。

工作环境:win10家庭版,Visual Studio 2017专业版,emWin模拟器

首先我们先生成汉字库,用到的工具是FontCvtST.exe,打开软件,步骤如下:

emwin 中文 emwin中文显示教程_#include

再此我选择标准的,下面有抗锯齿的,扩展模式的,点击“OK”,继续走......

emwin 中文 emwin中文显示教程_字符串_02

再此需要选择那种字体,字形,以及大小,我选择了宋体粗体18个点,继续走........

emwin 中文 emwin中文显示教程_字符串_03

在上面这个图中,首先编辑 - >禁用所有字符,然后 - >启用字符范围,选择0-7F,也就是使能一些常用的符号,数字以及大小写字母。假如你不失能所有的字符,生成出来的库可是很大的,我试了大概是29.9MB,就算芯片的FLASH为1M挺大的了,可想而知,我们只需要失能我们用到的汉字即可,不然占芯片内存。使能一些字符数字。字母之后,就需要使能我们用到的汉字了,这里有一个技巧,新建一个文本文档命名为1.txt,把你需要的汉字复制上去,保存成Unicode类型,例如下图:

emwin 中文 emwin中文显示教程_#include_04

随后我们,编辑 - >读取模式文件....然后选择这个文本文档,然后文件 - >另存为:

emwin 中文 emwin中文显示教程_字符串_05

保存这个文件最好不要带中文,比如我保存为文件名为:Font24.c之后把这个文件添加到你的工程。

 

接下来我们要做的是怎么显示这些汉字了,这里用到的是叫U2C.exe,他的意思就是UTF-8转C文件,把UTF-8类型的转换为C文件,接下来我们看怎么生成,同样是刚刚的那个文档1.txt,双击打开,文件 - >另存为 - >编码形式我们选择UTF-8的类型,然后保存。打开U2C.exe,然后选择UTF-8类型的那个1。 TXT文档,点击转换就会生成一个跟跟文档名称一样的.C文件,我们打开这个文件,把双引号里面的复制出来如图:

emwin 中文 emwin中文显示教程_字符串_06

最后我要贴上最终效果了,看下图:

随后我贴上代码来分析,如下:

#include <stdlib.h>
#include "DIALOG.h"
                   //Somnus陳的个人博客 -> UTF-8类型文本文档用U2C转来
char const str[] = "Somnus\xe9\x99\xb3\xe7\x9a\x84\xe4\xb8\xaa\xe4\xba\xba\xe5\x8d\x9a\xe5\xae\xa2";
char *pStr = str;

//字体库 -> Unicode类型的文本文档用FontCvtST转来
extern GUI_CONST_STORAGE GUI_FONT GUI_FontFont24;

void MainTask(void) {
	GUI_Init();
	GUI_SetBkColor(GUI_WHITE);
	GUI_Clear();
	GUI_SetColor(GUI_BLUE);
	GUI_SetFont(&GUI_FontFont24);
	GUI_UC_SetEncodeUTF8();
	//使用指针
	GUI_DispStringAt(pStr, 40, 100);
	//直接使用字符串
	GUI_DispStringAt
	while (1)
	{
		GUI_Delay(100);
	}
}

分析代码:首先需要在这个文件包含extern GUI_CONST_STORAGE GUI_FONT GUI_FontFont24; 这句话在生成的Font24.c中有,上面的STR [],里面的内容就是用U2C软件生成的内容复制进去的,背景色设置为白色,字体设置为蓝色,现实的内容有两个,主要是告诉大家,第一种是使用指针实现的,第二种直接用字符串也可以实现,下面的同时就是循环了,不然程序就是一闪而过,就这些。