emWin – 汉字字库的生成以及显示教程(附加代码)

在工作中使用了emWin之后除了画图之外,另一个就是汉字库的使用了,这个可是非常吃空间的,用了就理解了。在这里主要教大家如何生成汉字库以及显示。
工作环境:win10家庭版 、Visual Studio 2017专业版、emWin模拟器
首先我们先生成汉字库,用到的工具是FontCvtST.exe,打开软件,步骤如下:

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

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

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

随后我们,Edit -> Read pattern file …. 然后选择这个文本文档,然后 File -> Save as :

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

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

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

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

#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("www.blogtextbook.com", 13, 170);

	while (1)
	{
		GUI_Delay(100);
	}
}

分析代码:首先需要在这个文件包含extern GUI_CONST_STORAGE GUI_FONT GUI_FontFont24; 这句话在生成的Font24.c中有,上面的str[],里面的内容就是用U2C软件生成的内容复制进去的,背景色设置为白色,字体设置为蓝色,现实的内容有两个,主要是告诉大家,第一种是使用指针实现的,第二种直接用字符串也可以实现,下面的while就是循环了,不然程序就是一闪而过,就这些。
需要用到的工具和源码都在这里了:点我!
版权声明:本文为博主原创文章,未经博主允许不得转载

486 Comments

Add a Comment

电子邮件地址不会被公开。