ucgui怎样实现字库与程序空间分离
展开全部
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位置就可以咯...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询