iicsoft029 发表于 2011-8-17 14:33:31

关于UCGUI中汉字显示的问题

我在UCGUI中用下边的办法加入中文字库,我的字库大约1M多,运行的时候显示空间不足,我是在STM32下做的,但别人用这个都可以,是不是RAM太小了?

在uC/GUI中动态地读取字模是无法实现的,即当程序运行时动态地从汉字库中读取所需字母的字模,因此只有把所有一级常用汉字的字模全部读出,按照uC/GUI中字库创建的标准去创建新的字库就可以了。下面以在F16_HZ_ALL.C中创建字体GUI_Font16_HZ为例来说明具体的步骤。
第一步:声明全局字体结构体对象GUI_Font16_HZ,该声明必须在GUI.H文件中加以声明。
extern const GUI_FONT GUI_Font16_HZ;
第二步:定义一个用于存放字模数据的数组。
GUI_FLASH const unsigned char acFont16HZ\[\]\ ={{/*单字字模数据1*/},……,{/*单字字模数据n*/}};
第三步:定义一个GUI_CHARINFO的结构体对象数组,用于说明每个字母的字模数据在程序段存储的方式。
GUI_FLASH const GUI_CHARINFO GUI_Font16_HZ_CharInfo\={
{16,16,2,(void GUI_FLASH *)&acFont16HZ\,……,16,16,2,(void GUI_FLASH *)&acFont16HZ\ },};
第四步:按汉字内码的高位来定义多个结构体GUI_FONT_PROP对象。
GUI_FLASH const GUI_FONT_PROP GUI_Font16_HZ_Prop0 = {
0xb0a1,
0xb0fe,
&GUI_Font16_HZ_CharInfo\,
(void GUI_FLASH *)&GUI_Font16_HZ_Prop1
};
第五步:把创建的汉字字库文件F16_HZ_ALL.C添加到uC/GUI的工程中,通过以下语句实现在LCD上显示汉字:
GUI_SetFont(&GUI_Font16_HZ);
GUI_DispStringAt(GUI_UC_START
"成都理工大学"
GUI_UC_END
,20,10);

raymond_it 发表于 2011-12-9 22:09:10

这个要顶,刚好用上

raymond_it 发表于 2011-12-9 22:19:26

不知道,GUI_FLASH是在哪里定义的?
页: [1]
查看完整版本: 关于UCGUI中汉字显示的问题