可扩展的灵活的【字符画】从思路到制作
一、实现思路1.原理
字符画是在记事本等工具中用字符排列的方式构成一幅图像,得到的图像是灰度级的图像,从较远的地方看不同位置的黑色深浅不一。我们同时知道不同字符在同一字体,同一字号时所占像素是不同的,从远处看深浅也是不同的,如下图。

大家从较远的地方看会轻易发现不同。
2.思路
所以我们就有思路了,我们就可以将图像灰度化,逐个像素点分析灰度值,并一一匹配字符写在文本里。 但是,为了不同字体和字号的文字,我们要把软件做的可适应各种字体和字号,这也就是说要做的软件是可扩展的。
二、实现原理和过程
1.前期准备
我们有了思路就很好实现,我们想将这个字符画显示在记事本中,所以首先看字符在记事本中出现规律。

通过上图可以看出在记事本中不同类型的字符都占同样的大小,并且上下字符紧挨。这可以说为我们节省了不少事情。但是要注意字符的宽高比并不是1:1而是9:16,这在之后的制作中要注意。
2.字符整理
为了方便归纳,我将字符整理单分出来。
我在这里的思路是这样的,将字符画在画板上,然后取像素点个数。
将画板中字体的属性调成记事本的默认字体和大小。
创建一个按钮,然后写入

上面代码中的“文字 = 到文本 (字符 (到数值 (31 + 循环))) ”是本源码的关键,利用ASSIC码来穷举全部的基本字符,如果想使用中文字符则可以用UTF-8的方式循环得到(注:中文字符在记事本中占两个字符的位置)。
接下来是取像素点个数

这里的“m”变量作用是寻找字符当中像素点的最大值并以此为1个单位,其他则按比例换算成零点几单位。
最后配置文件的结果如下:

好了,我们完成了对字符的分析,并按一定格式生成了配置文件,接下来是我们的重头戏,做一个适配这种格式的字符画生成软件。
2.字符画生成
因为字符画这个软件还有一些辅助性质的功能,但我主要还是讲讲字符画的生成,完整的源代码在本节结尾。
我直接在源码中注释,就不分开讲了。


我还会写一个自制字符动画的.
大易吧无处不在.........
敬请期待.
有一个比较感人的故事,先看看吧:
《钟摆》(字符动画)
浙公网安备 33010602003188号