OpenEdv-开源电子网

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

如何在裸机中做出好看的字体?

[复制链接]

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
发表于 2014-9-10 23:47:56 | 显示全部楼层 |阅读模式
5金钱
想问问各位高手,如何用裸机写出漂亮的字体来

在裸机下显示字库的字体会有明显的锯齿,知道可以通过抗锯齿算法来实现无奈我现在都还没有找到 
 
还有在裸机下画一些圆角矩形什么的,比较难搞。

之前想过将多数东西通过刷图片的方式来实现,这样可以做出很多好看的东西。但是仅仅刷图片灵活性不是很高,还要占用很多ROM。
尤其是对于显示字库汉字来说不大现实。

不知道各位有什么好的思路?

最佳答案

查看完整内容[请看2#楼]

回复【10楼】KC_CEC: --------------------------------- ucgui,emWin里面有字体抗锯齿功能,似乎需要大内存支持。 还有一种方式是矢量字体,类似windows的文字显示效果,同样需要大内存支持。 如果采用点阵字体,不同字体字号都需要进行单独取模,很占空间的。 目前比较好的字体显示方式还是矢量字体,类似电脑,智能手机的显示效果,但是需要占用比较大量的运算和内存。 LZ有空应该看看计算机图形学方面的东西
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2177

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3321
金钱
3321
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-9-10 23:47:57 | 显示全部楼层
回复【10楼】KC_CEC:
---------------------------------
ucgui,emWin里面有字体抗锯齿功能,似乎需要大内存支持。
还有一种方式是矢量字体,类似windows的文字显示效果,同样需要大内存支持。
如果采用点阵字体,不同字体字号都需要进行单独取模,很占空间的。
目前比较好的字体显示方式还是矢量字体,类似电脑,智能手机的显示效果,但是需要占用比较大量的运算和内存。
LZ有空应该看看计算机图形学方面的东西
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-9-11 08:15:14 | 显示全部楼层
外置flash,将字库、图片什么的数据放进去,或者外置SD卡,这样灵活性更高
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
 楼主| 发表于 2014-9-11 09:39:03 | 显示全部楼层
回复【2楼】Badu_Space:
---------------------------------
这样子也只能解决刷图片的问题。
但如果我要显示很多不同的文字,总不能把这些都刷成图片吧?
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-9-11 09:46:29 | 显示全部楼层
显示字体 跟 显示图片的底层代码 本身没多大区别, 
都一样 填充固定区域的内容。

你仔细分析下显示字的程序 。
回复

使用道具 举报

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
 楼主| 发表于 2014-9-11 10:11:25 | 显示全部楼层
回复【4楼】aleda303:
---------------------------------
显示图片里面包含了图片的灰度,有一定的渐变效果。
但是字库里面只有0和1这样就会出现锯齿,不知道该如果做出灰度来抗锯齿
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-9-11 10:41:02 | 显示全部楼层
回复【5楼】KC_CEC:
---------------------------------
一个方法就是更改字库 , 
还一个就是算法了,就麻烦的多了。 我也不太会, 网上应该找到现成的图像的抗锯齿算法。[应该就是两个或多个相邻的像素之间取均值。]
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2014-9-11 11:28:02 | 显示全部楼层
我做法是在Windows上寫一支程式, 然後去捉windows 指定圖上的字或圖, 字可以透過選用字型改變, 很方便, 
給你參考, 還能像word 變大變小.....
回复

使用道具 举报

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
 楼主| 发表于 2014-9-11 13:21:55 | 显示全部楼层
回复【7楼】溫柔一刀:
---------------------------------
你是说捕捉windows上的像素灰度然后自己来改点阵?

不好意思,没有弄明白你的意思。能否详细说说看?
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2014-9-11 13:28:01 | 显示全部楼层
回复【8楼】KC_CEC:
---------------------------------
沒有錯, 就是那意思

1. 利用 BCB , 開啟一張空白的 Image
2. 設計一些UI , 比如何以打字, 選字型, 選圖,  然後將字或圖輸出到 Image上去.
3. 利用widnwos內建很多API , 可以把 Image上一點一點的讀出來, 然後存成你要的格式
(若只要黑白, 就看大於多少是黑, 少於多少是白......)
我是存成 const font[] ={ ........};
4. 有了以上的資料, 你就可以點到你想顯示的LCD上, 要什麼都可以, 因為是用WINDOWS API 幫你把點讀回來
回复

使用道具 举报

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
 楼主| 发表于 2014-9-11 15:07:30 | 显示全部楼层
回复【9楼】溫柔一刀:
---------------------------------
这样子其实就是对自己做好的图片再取模的意思吧,内部单片机就当成图片来刷了。
如果显示的内容不固定的话(比如电子书),这样的显示依然会有锯齿吧?
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2014-9-11 15:10:09 | 显示全部楼层
回复【10楼】KC_CEC:
---------------------------------
是的, 你的理解是對的,

但字型有很多種, 可以選你可以接受為主, 就看你的接受度
回复

使用道具 举报

3

主题

2177

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3321
金钱
3321
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-9-12 16:02:56 | 显示全部楼层
回复【10楼】KC_CEC:
---------------------------------
所谓锯齿是计算机显示曲线的时候实际上是通过很多直线段来组成,以直代曲,这种方式的好处就是节省资源,速度快。直线段越短,锯齿就越小,反之越大。你需要做的就是在运算性能,内存允许的情况下尽可能的缩短每条线段长度,利用更多的直线段来表示一条曲线
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 23:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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