ucgui怎样实现字库与程序空间分离
答案:1 悬赏:30 手机版
解决时间 2021-01-27 09:52
- 提问者网友:你给我的爱
- 2021-01-27 07:04
ucgui怎样实现字库与程序空间分离
最佳答案
- 五星知识达人网友:平生事
- 2021-01-27 08:13
1、ucgui作为一个强大的GUI系统,现在嵌入式设备的开发上应用的越来越多了,现在对于在这套系统上的中文支持,控件功能扩展等方面的资料也很多,有兴趣的朋友可以到论坛里转悠一下,收获一定不少的。在Arm上利用这套GUI系统工作的时间也短了,现在也给大家说说自己的一些应用吧。大家都知道,程序与数据分离开对于开发还是维护都很有必要的,反正本人就很讨厌为download一个程序花上几分钟或上10分钟的时间的。ucgui提供一个字库的生成叫字体转换器软件,能方便的把window上的字库转换为满足ucgui要求的c文件(当然俺可不保证可随便盗版用MS的字体哦)。
2、生成的c文件格式大概为下面的形式GUI_CONST_STORAGE U8 acFontHZ16x16_0020[] ={________,________,...};......GUI_FLASH const GUI_CHARINFO GUI_FontHZ16x16_CharInfo[] ={{ 9, 9, 2, (void GUI_FLASH *)&acFontHZ16x16_0020 },...};......GUI_FLASH const GUI_FONT_PROP GUI_FontHZ16x16_Prop_a1 ={0xa1a1,0xa1fe,&GUI_FontHZ16x16_CharInfo[96],(void *)&GUI_FontHZ16x16_Prop_a2};GUI_FLASH const GUI_FONT_PROP GUI_FontHZ16x16_Prop_ASC ={0x0020, // first character0x007f, // last character&GUI_FontHZ16x16_CharInfo[0], // address of first character(void *)&GUI_FontHZ16x16_Prop_a1 // pointer to next GUI_FONT_PROP};GUI_CONST_STORAGE GUI_FONT GUI_FontHZ16x16 ={GUI_FONTTYPE_PROP_SJIS, // type of font16, // height of font16, // space of font y1, // magnification x1, // magnification y(void GUI_FLASH *)&GUI_FontHZ16x16_Prop_ASC};
3、如果想大改动的去修改Edit或Text控件关于显示字模的代码的话,本人觉得会有些难度并且没这个必要其实我们在调用ucgui显示的时候需要指定到底用哪个字库显示GUI_SetFont(&GUI_FontHZ16x16);在这里我们主要修改的就是GUI_FontHZ16x16改为一个非const类型变量,而把GUI_FONT结构(void GUI_FLASH *)指向的所有内容变成二进制文件都放在固定的数据地址就可以了,接着怎样把固定的那部分内容生成一个二进制文件呢?打开你的ADS,把GUI_FLASH const GUI_FONT_PROP GUI_FontHZ16x16_Prop_ASC以上所有的数组变成const类型存放为一个.c文件const GUI_FONT g_ResourceAddress = {&GUI_FontHZ16x16_Prop_ASC,};GUI_FONT * dbc_WindowsListAddr(void){return (GUI_FONT *)&g_ResourceAddress;}当然你还要设置一下Simple image的开始位置偏移地址.最后就是在程序中要把GUI_FontHZ16x16的GUI_FLASH *的指向到固定的flash位置就可以咯...
2、生成的c文件格式大概为下面的形式GUI_CONST_STORAGE U8 acFontHZ16x16_0020[] ={________,________,...};......GUI_FLASH const GUI_CHARINFO GUI_FontHZ16x16_CharInfo[] ={{ 9, 9, 2, (void GUI_FLASH *)&acFontHZ16x16_0020 },...};......GUI_FLASH const GUI_FONT_PROP GUI_FontHZ16x16_Prop_a1 ={0xa1a1,0xa1fe,&GUI_FontHZ16x16_CharInfo[96],(void *)&GUI_FontHZ16x16_Prop_a2};GUI_FLASH const GUI_FONT_PROP GUI_FontHZ16x16_Prop_ASC ={0x0020, // first character0x007f, // last character&GUI_FontHZ16x16_CharInfo[0], // address of first character(void *)&GUI_FontHZ16x16_Prop_a1 // pointer to next GUI_FONT_PROP};GUI_CONST_STORAGE GUI_FONT GUI_FontHZ16x16 ={GUI_FONTTYPE_PROP_SJIS, // type of font16, // height of font16, // space of font y1, // magnification x1, // magnification y(void GUI_FLASH *)&GUI_FontHZ16x16_Prop_ASC};
3、如果想大改动的去修改Edit或Text控件关于显示字模的代码的话,本人觉得会有些难度并且没这个必要其实我们在调用ucgui显示的时候需要指定到底用哪个字库显示GUI_SetFont(&GUI_FontHZ16x16);在这里我们主要修改的就是GUI_FontHZ16x16改为一个非const类型变量,而把GUI_FONT结构(void GUI_FLASH *)指向的所有内容变成二进制文件都放在固定的数据地址就可以了,接着怎样把固定的那部分内容生成一个二进制文件呢?打开你的ADS,把GUI_FLASH const GUI_FONT_PROP GUI_FontHZ16x16_Prop_ASC以上所有的数组变成const类型存放为一个.c文件const GUI_FONT g_ResourceAddress = {&GUI_FontHZ16x16_Prop_ASC,};GUI_FONT * dbc_WindowsListAddr(void){return (GUI_FONT *)&g_ResourceAddress;}当然你还要设置一下Simple image的开始位置偏移地址.最后就是在程序中要把GUI_FontHZ16x16的GUI_FLASH *的指向到固定的flash位置就可以咯...
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯