硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3368|回复: 6
收起左侧

[emWin] 如何实现超大字体显示?比如480点阵

[复制链接]

4

主题

8

回帖

20

积分

新手上路

积分
20
发表于 2018-10-26 19:43:14 | 显示全部楼层 |阅读模式
emwin的字体定义如下:

typedef struct {
  U8 XSize;
  U8 YSize;
  I8 XPos;
  I8 YPos;
  U8 XDist;
  const unsigned char * pData;
} GUI_CHARINFO_EXT;


如果要显示超大字体,XSize或者YSize超过256,就会显示乱码,如何解决?有没有好办法?




回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115777
QQ
发表于 2018-10-27 01:18:24 | 显示全部楼层
用emWin自己支持的字体就行,XBF或者SIF测试。如果需要,可以帮楼主测试下。
回复

使用道具 举报

4

主题

8

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2018-10-27 09:38:35 | 显示全部楼层
本帖最后由 hj356 于 2018-10-27 09:41 编辑
eric2013 发表于 2018-10-27 01:18
用emWin自己支持的字体就行,XBF或者SIF测试。如果需要,可以帮楼主测试下。

我后来试过矢量的,HEAP定义到外部SDRAM,给了2M字节,字体大了还是不行。
这个有人好像找SEGGER求证过,受限制了:
http://www.openedv.com/thread-276404-1-3.html


之前我试了XBF,出来乱码,我待会再试下。
另外用FontCvt生成大字体,软件卡得要命,应该是软件优化问题。

我感觉现在显示屏分辨率都越来越高,显示大字体的需求也是越来越多了。

像电梯里的显示屏,以前都是数码管,现在都用彩屏了,就显示个数字,箭头。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115777
QQ
发表于 2018-10-27 09:49:49 | 显示全部楼层
hj356 发表于 2018-10-27 09:38
我后来试过矢量的,HEAP定义到外部SDRAM,给了2M字节,字体大了还是不行。
这个有人好像找SEGGER求证过 ...

好弄,开三缓冲即可,如果三缓冲还不给力,绘制到存储设备即可,以后刷存储设备AI来绘制超大个字体。
矢量汉字是我当年花了一周时间才搞定的,后来共享了。
回复

使用道具 举报

4

主题

8

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2018-10-27 21:03:00 | 显示全部楼层
本帖最后由 hj356 于 2018-10-27 21:11 编辑
eric2013 发表于 2018-10-27 09:49
好弄,开三缓冲即可,如果三缓冲还不给力,绘制到存储设备即可,以后刷存储设备AI来绘制超大个字体。
矢 ...

XBF和矢量字体,240*480点阵的字体还是不行。

目前是用打点的方式实现了,但是这样跟画图差不多了。
虽然用三缓冲方式避免了屏幕刷新缓慢的问题,处理过程还是会占用不少资源。刷新4个字符感觉耗时到了秒级了。
显示屏是1280*480的:

无标题.jpg

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115777
QQ
发表于 2018-10-28 02:39:08 | 显示全部楼层
hj356 发表于 2018-10-27 21:03
XBF和矢量字体,240*480点阵的字体还是不行。

目前是用打点的方式实现了,但是这样跟画图差不多了。

显示屏真漂亮。

测试了下,XBF大字体也无法正常显示。可以采用另外一个方案了,绘制大个字体(贴图或者其他方式)到存储设备,以后通过存储设备API来绘制超大个字体。
回复

使用道具 举报

4

主题

8

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2018-10-29 09:43:12 | 显示全部楼层
本帖最后由 hj356 于 2018-10-29 09:45 编辑
eric2013 发表于 2018-10-28 02:39
显示屏真漂亮。

测试了下,XBF大字体也无法正常显示。可以采用另外一个方案了,绘制大个字体(贴图或 ...

对,这个应该可以的。之前我把几张图片放在SDRAM,调用显示也是很快的。

另外要说的是,F429用emwin的打点函数,速度比我想象的要慢,能够看到打点的过程。

还好之前看了安富莱的教程,里面说到程序优化和32位宽SDRAM对刷新速度的影响,让我印象深刻。在实际应用时坚持使用了32位宽的SDRAM。第一次使用F429就做到了满意的效果,节省了时间。

再次感谢安富莱,感谢硬汉~
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-17 12:12 , Processed in 0.242221 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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