最近项目中用到几种字体,stm32的内部flash以经捉襟见肘。没办法!只好找度娘及求助群里的高手,这儿对Eric2013,洋洋kan国际等高手表示感谢。学习了他们的一些思维。
下面是找到的相关链接:
http://blog.chinaunix.net/uid-361890-id-2953183.html
http://www.openedv.com/posts/list/9736.htm;jsessionid=6B5FA51FE6BBC280B752D9B6
这儿我主要用的是crazytyt文章的办法,在他的基础上进行必定的改善。处理控件用汉字居中等问题。
其实我的办法很简略,增加了每个字的元素一些标量(xSize, ySize, 字节等)就能够了。
由于ucGUI中对文字的高度宽度的取值不但只要取模时用到,在核算居中及文本长度时也相同被用到。这便是为什么,修正GUIPROP_DispChar(c)函数后控件文本中的字感觉变的很长!
下面是我的修正办法:
把{ 16, 16, 2, (void GUI_FLASH *)GUI_FontHZ16_Flash_BaseAddr},在它的下面仿制94次就能够了。
OK到这儿,问题就处理了。哈哈,是不是感觉也太简略了~ 现实确实是这姿态。主要是站在伟人的膀子上进行改善的。
还有个人认为ASCII码不算许多,就没有必要放到外部FLASH了。所以我对其保存。
下面是我的文件:
http://pan.baidu.com/share/link?shareid=157310&uk=118334538
作用:
弥补:
在把自定义字体设定为默许字体时,控件没有对基默许指定。要手动去指定,在程序开端的当地参加如下代码:
1TEXT_SetDefaultFont(GUI_DEFAULT_FONT);2BUTTON_SetDefaultFont(GUI_DEFAULT_FONT);3EDIT_SetDefaultFont(GUI_DEFAULT_FONT);4LISTVIEW_SetDefaultFont(GUI_DEFAULT_FONT);5FRAMEWIN_SetDefaultFont(GUI_DEFAULT_FONT);
省掉了必定控件, 这儿依据自己的需求去增加。
下面奉上4个字体文件:
http://pan.baidu.com/share/link?shareid=157719&uk=118334538
样本:
空的时分写了一个小软件,用来烧写字库到外部FLASH中,假如你也是用的stm32的话就也能够用上,不过要稍做改动。当然是FLASH驱动那部分。改动如下:
改了这三个当地就能够了。
上位机是用C#写的,与下位机的接口是rs232, 选用Modbus协议, 115200波特率。
下面是软件截图,附件中包含源码。
附件如下:
包含上下位机源码。
http://pan.baidu.com/share/link?shareid=157523&uk=118334538
这些文件都在下面的附件中。 整个的移植进程,能够参阅“洋洋kan国际”的文章。这儿就不细说了。 部分的改善,在其文章中也有阐明。能够用以下附件直接替换GUI源文件对应的文件。
在上文的下载字库东西或许过于繁琐,在后续文章中会进行改善,运用YMODEM高效的文件传输协议传送。