文号
t69273
阅读
16067
回复
13
收藏
7
想自己用单片机做点阵的可以看下,点阵字模提取工具VC6.0工程源码
2015/01/07
IP:湖北
整个工程是准备做个LED点阵屏的播放器,这个字模提取是里面的一个模块,刚完工就分享给大家,希望能弄点分数吧
代码注释非常详细,应该都能看懂的

attachment icon 点阵字模生成工具V1.0最终完成版VC6.0工程.rar 5.82MB RAR 280次下载
8.jpg
1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg
znnwe1作者
11年11个月前IP:湖北
739225
1楼
唉........潜水几百年今天冒个泡分享点东西给大家居然没人感兴趣,算了继续潜水了.......
引用
评论
11年11个月前IP:广东
739243
2楼
去掉线了为什么还有黑的呢
引用
评论
11年11个月前IP:北京
739266
3楼
用Python然后直接结合PIL和FreeType不但直接生成任意字体任意大小的点阵,而且可以直接输出到串口或者USB直接控制。
这样去弄别人加了干扰线的字库显得非常没有必要,关于版权什么的问题应该也不必我多说了,别人加了干扰线必然是有自己的版权。
引用
评论
11年11个月前IP:北京
739268
4楼
font=ImageFont.truetype("/Library/Fonts/Arial Bold.ttf",12);
img=Image.new("RGB",(128,64))
draw=ImageDraw.Draw(img);
draw.text((2,2),"Justin's VFD",(255,255,255),font=font);
昨天晚上半个小时就搞定了的程序,直接在我的GU128x64 VFD屏幕上刷成功。
4行Python代码生成图片,之后进行二值化轻松生成点阵,然后直接USB CDC串口写入我的控制器刷屏幕。

IMG_0819.jpg IMG_0820.jpg
引用
评论
11年11个月前IP:浙江
739306
5楼
PC上可以不用字库
最简单的,GDI的DrawText
引用
评论
11年11个月前IP:北京
739375
6楼
同上
PC上直接用GDI+
任意大小都可以做
System.Drawing里面,好像
这个是.NET框架里的东西



Sub LoadString(ByRef Path As String, ByRef Context As String, ByRef Brush As System.Drawing.Brush, ByVal Size As Integer, Optional ByVal Width As Integer = 1920, Optional ByVal Height As Integer = 1080)
                    ’///////////////////////////////字符绘制////////////////////////////
                    Dim Image As System.Drawing.Bitmap = New Bitmap(Width, Height)
                    Dim GDI As System.Drawing.Graphics = Graphics.FromImage(Image)
                    Dim FontFamily As System.Drawing.FontFamily = New FontFamily("微软雅黑")
                    Dim Font As System.Drawing.Font = New Font(FontFamily, Size, FontStyle.Regular, GraphicsUnit.Pixel)
                    GDI.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
                    GDI.InterpolationMode = Drawing2D.InterpolationMode.High
                    GDI.DrawString(Context, Font, Brush, 0, 0)
                    GDI.Dispose() : Font.Dispose() : FontFamily.Dispose()
                    ‘///////////////////转灰度,其实算法改下就可以转黑白//////////////////////////
                    Dim Rect As Rectangle = New Rectangle(0, 0, Image.Width, Image.Height)
                    Dim Color As System.Drawing.Color : Dim ColorTmp As System.Drawing.Color
                    For i = 0 To Rect.Width - 1 Step 1
                    For j = 0 To Rect.Height - 1 Step 1
                        Color = Image.GetPixel(i, j)
                        Dim TmpInt As Integer = (CInt(Color.R) + CInt(Color.G) + CInt(Color.B)) \ 3
                        ColorTmp = System.Drawing.Color.FromArgb(TmpInt, TmpInt, TmpInt)
                        Image.SetPixel(i, j, ColorTmp)
                    Next j
                Next i
                ‘/////////////////接下来就是读这个Bitmap的每个像素,按照显示屏的类型生成点阵数据了
                ’/////////////////String类还是很强大的/////////////////
                End Sub


把自己写的一些玩意合并了一下。。。
引用
评论
11年11个月前IP:陕西
739386
7楼

attachment icon 7种字模软件.rar 6.04MB RAR 109次下载 放上来个小合辑,7种字模小工具,单片机适用
引用
评论
znnwe1作者
11年11个月前IP:湖北
742154
8楼
呵呵果然没人看得懂删贴了
引用
评论
znnwe1作者
11年11个月前IP:湖北
742157
9楼
居然自己不能删帖我也是醉了,跪求斑竹删贴谢谢
引用
评论
znnwe1作者
11年11个月前IP:湖北
742195
10楼
引用 04102:
放上来个小合辑,7种字模小工具,单片机适用
就这个回复还靠谱点其他的回复太逗B了[s::handshake]
引用
评论
znnwe1作者
11年11个月前IP:湖北
742211
11楼
贴子还没删那有些问题就需要说明下了。
1.这个工具只是整个工程里的一个底层字模的提取和处理部分被我封装成了一个独立的窗口方便直接用LED DIY 的人使用。所以这个窗口上是不提供怎么将数据传送到单片机的方法的,通过串口或WIFI传送数据的功能在前面的播放器模块上。
2.看回复大部分人纠结的问题就是我使用了现成的点阵字库而没有直接用系统上的矢量字库来生成点阵字模,原因是本模块的重点在于字模数据的处理而不是怎么提取到字模数据,为了减少代码量所以放弃使用矢量字库。整个工程已经做完了有空时倒是可以考虑更新一下字模提取模块,但因为播放器的下位机对象主要是单片机驱动的类似广告横屏的单色屏,所以位图或特殊字体的处理没有什么太大意义所以在第一个版本里没有加入这些功能。
3.版权!看到一个回复居然能扯到版权瞬间就把我吓尿了因为这个问题可大可小,在这个贴子被删之前被他那么一BB大部分不明真相的朋友估计还真认为我侵权了,所以是非常有必要声明一下的,虽然开源接触的多但对版权问题本人还是很重视的毕竟别人写个程序也不容易,所以我对那个字库生成程序的作者是非常感激的毕竟节省了我不少的时间,但需要说明的是:1.我没有针对这款软件写注册机 2.没有对程序本身进行反编译。所以是不构成侵权的,至于我在使用未注册的程序生成的字库时怎么对数据进行重组那就是我的事了这就跟字库生成程序的版权没有半毛钱关系了,因为作者也没对这些问题进行特别的版权声明。
4.感觉这里已经不能愉快的玩耍了所以在次请求斑竹对我删贴封号,感激不尽[s::handshake]
引用
评论
11年11个月前IP:甘肃
742938
12楼
一个程序哪有这么麻烦!
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的