硬汉嵌入式论坛

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

[emWin] 矢量字体

[复制链接]

58

主题

118

回帖

292

积分

高级会员

积分
292
发表于 2014-11-29 00:25:32 | 显示全部楼层 |阅读模式
版主,按照您的方法,我创建了一个矢量字体程序,但是死活不显示啊。我是NXP的单片机,可以用emwin——freetype的字体吧?函数清单如下,我在主函数中调用了这个函数。
FIL TrueTypeSrc;
char *_acBuffer;
FRESULT result_type;
uint32_t bw=0;
GUI_TTF_CS Cs0,Cs1,Cs2,Cs3;
GUI_TTF_DATA Data;
GUI_FONT Font0,Font1,Font2,Font3;
GUI_HMEM hMem_type;
//void myTrueTypeFont();
void myTrueTypeFont()
{

hMem_type=GUI_ALLOC_AllocNoInit(1024*1024*6);
_acBuffer=GUI_ALLOC_h2p(hMem_type);
result_type=f_open(&TrueTypeSrc,"kaiti.ttf",FA_OPEN_EXISTING|FA_READ|FA_OPEN_ALWAYS);
result_type=f_read(&TrueTypeSrc,_acBuffer,TrueTypeSrc.fsize,&bw);

Data.pData=_acBuffer;
Data.NumBytes=TrueTypeSrc.fsize;

Cs0.pTTF=&Data;
Cs0.PixelHeight=24;
Cs0.FaceIndex=0;

Cs1.pTTF=&Data;
Cs1.PixelHeight=48;
Cs1.FaceIndex=0;

Cs2.pTTF=&Data;
Cs2.PixelHeight=96;
Cs2.FaceIndex=0;

Cs3.pTTF=&Data;
Cs3.PixelHeight=144;
Cs3.FaceIndex=0;

GUI_TTF_CreateFont(&Font0,&Cs0);
GUI_TTF_CreateFont(&Font1,&Cs1);
GUI_TTF_CreateFont(&Font2,&Cs2);
GUI_TTF_CreateFont(&Font3,&Cs3);
}
我跟踪了,文件系统执行的结果是正确的。kaiti.ttf是我从网上下载的字体,PC上打开后也是正确的。
回复

使用道具 举报

58

主题

118

回帖

292

积分

高级会员

积分
292
 楼主| 发表于 2014-11-29 00:27:17 | 显示全部楼层
heap已经分配了96k了,足够了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2014-11-29 10:30:24 | 显示全部楼层
矢量字体的汉字显示相当的消耗内存空间的,你的动态内存多大,有20MB没有。特别是放大字体的时候。

你设置下仅显示这个字体试试:
Cs0.pTTF=&Data;
Cs0.PixelHeight=24;
Cs0.FaceIndex=0;

GUI_TTF_CreateFont(&Font0,&Cs0);
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2014-11-29 10:31:05 | 显示全部楼层
另外你申请的动态内存够放你的字体吧:hMem_type=GUI_ALLOC_AllocNoInit(1024*1024*6);
回复

使用道具 举报

58

主题

118

回帖

292

积分

高级会员

积分
292
 楼主| 发表于 2014-11-29 12:05:48 | 显示全部楼层

回 eric2013 的帖子

eric2013:另外你申请的动态内存够放你的字体吧:hMem_type=GUI_ALLOC_AllocNoInit(1024*1024*6); (2014-11-29 10:31)
字体4M,内存应该是够了。#define GUI_NUMBYTES  (1024 * 1024) * 20 // x MByte,这个是20M的内存。
回复

使用道具 举报

58

主题

118

回帖

292

积分

高级会员

积分
292
 楼主| 发表于 2014-11-29 12:37:36 | 显示全部楼层

回 eric2013 的帖子

eric2013:另外你申请的动态内存够放你的字体吧:hMem_type=GUI_ALLOC_AllocNoInit(1024*1024*6); (2014-11-29 10:31)
版主,我试了NI7SEG.ttf字体,是可以显示的。你有没有试过显示汉字呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2014-11-29 13:26:18 | 显示全部楼层

回 yuanfp 的帖子

yuanfp:版主,我试了NI7SEG.ttf字体,是可以显示的。你有没有试过显示汉字呢? (2014-11-29 12:37) 
试过,我这里动态内存不过,后来就没有再搞了。
回复

使用道具 举报

4

主题

80

回帖

4

积分

初级会员

积分
4
发表于 2014-12-5 08:21:39 | 显示全部楼层

回 yuanfp 的帖子

yuanfp:版主,我试了NI7SEG.ttf字体,是可以显示的。你有没有试过显示汉字呢? (2014-11-29 12:37) 
之前也用过NXP的片子显示着SEG字体,但是显示有问题,比如我要显示更大尺寸的字符时,却是这些字符的间距变大而不是尺寸变大。。。这是什么节奏额。
且行且珍惜~
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2014-12-5 10:06:18 | 显示全部楼层

回 蛇大人 的帖子

蛇大人:之前也用过NXP的片子显示着SEG字体,但是显示有问题,比如我要显示更大尺寸的字符时,却是这些字符的间距变大而不是尺寸变大。。。这是什么节奏额。 (2014-12-05 08:21) 
SEG字体没问题的。
回复

使用道具 举报

4

主题

80

回帖

4

积分

初级会员

积分
4
发表于 2014-12-5 11:46:49 | 显示全部楼层

回 eric2013 的帖子

eric2013:SEG字体没问题的。 (2014-12-05 10:06) 
是没问题。但不知道显示的时候 ,尺寸大小为何变成了间距大小。。。
且行且珍惜~
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2014-12-5 12:49:09 | 显示全部楼层

回 蛇大人 的帖子

蛇大人:是没问题。但不知道显示的时候 ,尺寸大小为何变成了间距大小。。。 (2014-12-05 11:46) 
有这情况。。。。
回复

使用道具 举报

9

主题

19

回帖

46

积分

新手上路

积分
46
发表于 2015-12-22 17:27:55 | 显示全部楼层
请问楼主,我也是用 的nxp单片机,我添加了emwin的矢量库后,提示缺少俩函数,
void GUI__ClearTextBackground(int xDist, int yDist);
void GUI_AA__DrawCharAA8(int x0, int y0, int XSize, int YSize, int BytesPerLine, const U8 * pData);
,但是我的GUI_Private.h文件里压根就么有这俩函数的声明,我即使强行添加了声明,也依旧提示未定义。我的emwin是522版本的,你用矢量字体的时候为什么没有这个问题?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2015-12-23 16:08:54 | 显示全部楼层

回 chenyongand 的帖子

chenyongand:请问楼主,我也是用 的nxp单片机,我添加了emwin的矢量库后,提示缺少俩函数,
void GUI__ClearTextBackground(int xDist, int yDist);
void GUI_AA__DrawCharAA8(int x0, int y0, int XSize, int YSize, int BytesPerLine, const U8 * pData);
,但是我的GUI_Private.h文件里压根 .. (2015-12-22 17:27) 
试试MDK里面自带的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-13 06:28 , Processed in 0.307446 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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