原创的 任意大小字体、图标字体 显示方案分享

2019-10-12 14:43发布

一直以来都是伸手党,觉得应该做点贡献才对..
下面是我在原子大哥的warship 汉字显示例程改的 任意大小字体和图标字体显示方案,希望能给需要的人提供一点帮助。

移植这个程序非常简单,只需要粘贴复制,使用这个程序也不需要注明出处,我也不需要任何版权。但如果你觉得对你有帮助的话我只希望你能做到将自己的心得体会分享给大家,不要只做伸手党。

使用方法:
将附件XXX解压出四个文件,粘贴到..\_WarShip2,标准例程-V3.5库函数版本实验41 汉字显示实验TEXT目录下(没有warship板子的请直接下载源程序chinese display,接口自己更改即可)
将System解压到SD卡如图:

然后在主函数里写:

POINT_COLOR=RED;     
Show_Str(5,50,200,24,"战舰 STM32开发板",24,0);       //▓显示24号字     
Show_Str(5,78,200,32,"正点原子@ALIENTEK",32,0);   /▓显示32号字        
  POINT_COLOR=BLUE;  
Show_Str(5,118,200,28,"对应汉字(28*28)为:",28,0);/▓显示28号字     
__BOLD=32;  
Show_Str(5,150,200,32,"对应汉字(32*32)为:",32,0);/▓显示32号黑体字     
__BOLD=0;//清除黑体标志
Show_Str(5,185,200,16,"汉字计数器:+_*/",16,0);//16
Show_Str(5,205,200,12,"(*#^^&$%^$546jhgS",12,0);//12
/*原理同__BOLD,修改方法同__BOLD。目前只有40号字对应的图标文字。每个图都与ASCII码对应,打开word查询相关ASCII
对应的标准英文字库即可。比如"!"对应第一个
*/
__Pic=40;
Show_Str(5,230,200,40,"%",40,0);/▓显示40号图标字体
__Pic=0;

额外说明:
我没有用W25Q64,而是将字体全部储存在了SD卡中用文件系统读字库,方便简洁,解放了W25Q64。但是因为用了文件系统导致显示速度变慢,只适用于对显示速度要求不高的场合。大家也可以进一步开发将字体全部刷入W25Q64中以提高速度。SD卡读取字库并非我原创,但是作者是在找不到了,在这里很抱歉。
chinese display 是我自己更改过后的总程序,对原子大哥的源程序更改较大,可能比较难懂,但是程序量大大缩减,欢迎讨论,有问题指出。
▓注意,ff_convert函数有BUG,请按照下面附件进行修改。但是本工程没有用到这个函数,为了以后应用扩展不出错,还是建议大家修改。



对于想要研究具体实现的网友可以直接看XXX的四个文件,里面注释比较全。不懂得可以继续讨论。

以下就是按照上面的步骤修改原子例程的效果。(121、131这两个数覆盖了底层,不用在意)
效果图:

下面解释一下具体怎么用:(只有24、28、32、32黑体、40图标这几种)大家按照下面格式写就可以了。
并且支持横屏竖屏 LCD_Display_Dir(1);//1:横屏 0&屏蔽:竖屏
Show_Str(5,50,200,24,"战舰 STM32开发板",24,0);       //▓显示24号字     
Show_Str(5,78,200,32,"正点原子@ALIENTEK",32,0);   /▓显示32号字        
  POINT_COLOR=BLUE;  
Show_Str(5,118,200,28,"对应汉字(28*28)为:",28,0);/▓显示28号字     
__BOLD=32;   //让32号字显示成黑体(其实就是读取黑体字库)
Show_Str(5,150,200,32,"对应汉字(32*32)为:",32,0);/▓显示32号黑体字     
__BOLD=0;//清除黑体标志
Show_Str(5,185,200,16,"汉字计数器:+_*/",16,0);//16
Show_Str(5,205,200,12,"(*#^^&$%^$546jhgS",12,0);//12
__Pic=40;//显示40号的图标字,其他字号的图标字请用字库生成软件,然后参考我的程序更改
Show_Str(5,230,200,40,"%",40,0);/▓显示40号图标字体
__Pic=0;

其他字体和图标字体的制作:
这一部分也很简单,只要看懂了那四个文件就可以按照原子大哥教的制作字库来制作字库了。如果要制作大于40号的字请更改程序里面对应的数组。以更改Get_HzMat函数为主即可实现任意其他字体显示,如有疑问敬请咨询。
图标字体:一般来说是不需要图标字体的,但是如果想实现按键以及图标这个方法还是很有用的,具体实现不解释,附件有本程序需要的字体,大家可以安装。有疑问敬请咨询。一般看程序就能看懂,关于图标字体我的灵感来自http://www.openedv.com/posts/list/16673.htm,我看到这个文章之后才决定自己写一个任意字体的程序,里面关于图标字体的制作有更详细的介绍,对图标感兴趣的可以看看,利用里面提到FontCreator可以制作自己的字体。
另外提供几种图标字体http://www.cnblogs.com/chu888chu888/archive/2012/12/22/2829057.html


最后:
程序有问题或者写的不规范请谅解,有建议请务必提出!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。