OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 19699|回复: 35

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

  [复制链接]

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
发表于 2014-10-12 10:42:53 | 显示全部楼层 |阅读模式
一直以来都是伸手党,觉得应该做点贡献才对..
下面是我在原子大哥的warship 汉字显示例程改的 任意大小字体和图标字体显示方案,希望能给需要的人提供一点帮助。

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

使用方法:
将附件XXX解压出四个文件,粘贴到..\_WarShip\2,标准例程-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


最后:
程序有问题或者写的不规范请谅解,有建议请务必提出!

XXX.zip

7.5 KB, 下载次数: 2495

raphaelicons.ttf

46.31 KB, 下载次数: 2240

System.zip

5.24 MB, 下载次数: 6398

Chinese Display -.zip

7.53 MB, 下载次数: 22701

ff_convert.txt

1.08 KB, 下载次数: 1190

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2014-10-12 11:51:55 | 显示全部楼层
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

13

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2014-2-15
在线时间
0 小时
发表于 2014-10-12 12:19:05 | 显示全部楼层
这个舒服,正想找这个呢!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-12 12:26:21 | 显示全部楼层
这个必须顶。。。
cool
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

17

主题

342

帖子

0

精华

高级会员

Rank: 4

积分
544
金钱
544
注册时间
2014-4-24
在线时间
20 小时
发表于 2014-10-12 14:10:04 | 显示全部楼层
MARK,非常感谢~~~~
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-10-13 08:03:47 | 显示全部楼层
灰常好,谢谢分享!
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2014-10-13 09:21:40 | 显示全部楼层
感谢分享,版区有你更精彩!
回复 支持 反对

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1815
金钱
1815
注册时间
2011-10-9
在线时间
230 小时
发表于 2014-10-13 11:56:37 | 显示全部楼层
楼主这个是需要先做字库的吧?

例如楼主的字库   没有 30号  ,那么也无法显示30号 

如果可以把一个矢量字体 任意缩放 生成对应的点阵字 就好了 。 
有人实现了 ,可是不是共享方案,要钱di  呵
回复 支持 反对

使用道具 举报

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
 楼主| 发表于 2014-10-13 18:42:19 | 显示全部楼层
回复【8楼】simms01:
---------------------------------
但是一般应用只需要指定大小的字,任何字库都支持催生出来的复杂性反而没有这样按需而来的容易接受吧。矢量字体倒是很有意思..没研究过。
回复 支持 反对

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2013-10-9
在线时间
5 小时
发表于 2014-10-13 21:43:19 | 显示全部楼层
在战舰板上实验了一下,有问题显示不出来
回复 支持 反对

使用道具 举报

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
 楼主| 发表于 2014-10-14 20:04:10 | 显示全部楼层
回复【10楼】ggd163:
---------------------------------
什么现象?
回复 支持 反对

使用道具 举报

0

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2013-6-11
在线时间
16 小时
发表于 2014-10-15 19:30:54 | 显示全部楼层
MARK!!!!
回复 支持 反对

使用道具 举报

2

主题

394

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2012-5-8
在线时间
314 小时
发表于 2014-10-28 10:08:19 | 显示全部楼层
非常的牛啊!
回复 支持 反对

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-9-21
在线时间
6 小时
发表于 2014-11-1 10:23:28 | 显示全部楼层
我想问下,非汉字字符也是从字库读取出来的?我把28的字库移植到片外FLASH中,用楼主读取字符的方法读不到非汉字字符,寻地址方法也是用你的程序
回复 支持 反对

使用道具 举报

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
 楼主| 发表于 2014-11-12 20:45:02 | 显示全部楼层
回复【14楼】lab811642907:
---------------------------------
抱歉一直没上,请问SD卡是否成功呢?汉字和字符是分开来的,char12是字符,font12则是汉字。
回复 支持 反对

使用道具 举报

头像被屏蔽

65

主题

277

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2013-8-11
在线时间
29 小时
发表于 2014-11-13 09:22:02 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
mark,谢谢
回复 支持 反对

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-9-21
在线时间
6 小时
发表于 2014-11-20 10:53:58 | 显示全部楼层
回复【15楼】Austin:
---------------------------------
哈哈,可以,谢谢哈
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-4-30
在线时间
2 小时
发表于 2015-5-10 11:00:33 | 显示全部楼层
楼主,是怎么实现显示32*32 数字的。。。我想把数字也显示成32位的。。。
回复 支持 反对

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-4-24
在线时间
0 小时
发表于 2015-5-13 20:28:29 | 显示全部楼层
谢谢分享。。。。mark
回复 支持 反对

使用道具 举报

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
 楼主| 发表于 2015-7-13 11:42:57 | 显示全部楼层
回复【18楼】吃咯:
---------------------------------
你只需要printf("这是32号字体,支持数字和汉字");就好了啊。
至于原理部分是因为数字和汉字调用了sd卡中不同的字库
回复 支持 反对

使用道具 举报

10

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2013-12-6
在线时间
5 小时
发表于 2015-9-28 22:38:39 | 显示全部楼层
你好,请问能不能显示任意大小的图片图标啊?比如我想制作一个16*40的图标,然后显示一个16*40的图标?
回复 支持 反对

使用道具 举报

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
 楼主| 发表于 2015-9-30 15:52:41 | 显示全部楼层
回复【21楼】小蚂蚁:
---------------------------------
当然可以。方法都在上面。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2015-10-24
在线时间
0 小时
发表于 2015-10-24 10:25:48 | 显示全部楼层
回复【22楼】Austin:
---------------------------------
你好!!请问CHARXX.fon是如何生成的?有什么工具软件吗?
回复 支持 反对

使用道具 举报

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
 楼主| 发表于 2015-10-28 00:20:06 | 显示全部楼层
回复【23楼】青山溪语:
---------------------------------
原子大哥的例程有字库生成部分。
再看我上面的文字应该没什么问题吧?
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
发表于 2015-10-28 07:30:43 | 显示全部楼层
mark!!谢谢分享
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

9

主题

44

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2014-8-15
在线时间
0 小时
 楼主| 发表于 2015-10-28 09:45:58 | 显示全部楼层
回复【23楼】青山溪语:
---------------------------------
你看战舰的PDF教程显示中文汉字一章就行。不行再来问我就行
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2016-2-23
在线时间
31 小时
发表于 2016-2-26 11:33:54 | 显示全部楼层
正好需要,借鉴一下 ,非常感谢
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
216
金钱
216
注册时间
2016-1-2
在线时间
20 小时
发表于 2016-2-27 09:13:04 | 显示全部楼层
不错,支持原创,顶起!
回复 支持 反对

使用道具 举报

0

主题

23

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4366
金钱
4366
注册时间
2013-10-5
在线时间
413 小时
发表于 2016-10-2 11:27:23 | 显示全部楼层
申手党平时少发言,看到这个要点个赞。
回复 支持 反对

使用道具 举报

32

主题

300

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2012-3-30
在线时间
321 小时
发表于 2016-10-2 11:38:43 | 显示全部楼层
刚测试了一个16X16字符显示,你这个冒出来了,
回复 支持 反对

使用道具 举报

5

主题

150

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2015-12-28
在线时间
132 小时
发表于 2016-10-21 08:55:30 | 显示全部楼层

***********             **                       **********                           *************  
*                            **                        *           *                                              *
*                            **                        *           *                                              *
***********             **                       *            *                            ************
*                            **                        *            *                                             *
*                            **                        *            *                                             *
*                            **                        **********                           *************
越努力,越优秀;越独立,越自由
回复 支持 反对

使用道具 举报

48

主题

208

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1371
金钱
1371
注册时间
2015-3-24
在线时间
190 小时
发表于 2016-10-21 10:32:59 | 显示全部楼层
学习、学习!!!!!
小时在工地上玩,捡了一个根木棒回家,麻麻问我捡这破玩意回来有什么用?我脑子一热,就说“你可以用它来打我啊!!”
于是,一根木棒伴随了我很多年。
回复 支持 反对

使用道具 举报

17

主题

466

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2164
金钱
2164
注册时间
2013-1-11
在线时间
510 小时
发表于 2016-11-23 22:39:56 | 显示全部楼层
确实很不错!!!!!!
知识是你最好的财富
回复 支持 反对

使用道具 举报

22

主题

103

帖子

0

精华

高级会员

Rank: 4

积分
950
金钱
950
注册时间
2017-2-23
在线时间
205 小时
发表于 2017-3-8 11:56:16 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2019-9-24
在线时间
3 小时
发表于 2020-3-12 16:49:17 | 显示全部楼层
赞一个
回复 支持 反对

使用道具 举报

0

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2014-9-18
在线时间
21 小时
发表于 2020-5-9 16:51:27 | 显示全部楼层
需要学习,借鉴一下 ,非常感谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-28 06:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表