|
最近在 ”STM32F439+FreeRTOS+STemWin+文件系统“ 上做矢量字体显示。
步骤:
①从电脑中复制一个字体文件“华文彩云.ttf”到U盘中。
②上电从U盘读取字体文件到SDRAM。
③使用STemWin的矢量字体驱动库对该字体文件进行GUI字体的创建。
④显示字符串“音频格式:mp3”。
效果:我显示字符串“音频格式:mp3”时只显示了“ mp3”,没有显示出汉字。
问题:显示汉字是是否不能直接使用 GUI_DispStringAt("音频格式:mp3", 0, 0) 了,我也尝试过启用UTF-8,然后将字符串转换成 UTF-8 进行显示,结果还是无法显示出汉字
新手上路,求大神指教 !!
源码如下:
static GUI_HMEM hMem_type = Null;
static char *_acBuffer = Null;
static GUI_TTF_CS cs;
static GUI_TTF_DATA data;
static GUI_FONT font;
static BOOL TrueTypeInitFlag = False;
// 从加载字库文件,创建GUI字库
void TrueType_Load(char *path)
{
FIL TrueTypeSrc;
uint32_t bw=0;
TrueTypeInitFlag = False;
if(FR_OK != f_open(&TrueTypeSrc, path, FA_OPEN_EXISTING|FA_READ|FA_OPEN_ALWAYS)) return;
if(hMem_type != Null) GUI_ALLOC_Free(hMem_type);
hMem_type = GUI_ALLOC_AllocZero(TrueTypeSrc.fsize);
if(hMem_type == Null) return;
_acBuffer = GUI_ALLOC_h2p(hMem_type);
if(FR_OK != f_read(&TrueTypeSrc, _acBuffer, TrueTypeSrc.fsize, &bw)) return;
data.pData = _acBuffer;
data.NumBytes = TrueTypeSrc.fsize;
cs.pTTF = &data;
cs.PixelHeight = 24;
cs.FaceIndex = 0;
GUI_TTF_CreateFontAA(&font, &cs);
TrueTypeInitFlag = True;
}
// 设置字体大小
void TTF_SetFont(int size)
{
if(TrueTypeInitFlag != True) return;
cs.PixelHeight = size;
cs.FaceIndex = 0;
GUI_TTF_CreateFontAA(&font, &cs);
}
// 文字显示
static void MusicInfo_Updata(void)
{
if(PlayList_GetCurr(musicName) <= 0) return;
GUI_EnableAlpha(1);
GUI_SetTextMode(GUI_TEXTMODE_TRANS);
GUI_UC_SetEncodeUTF8();
TTF_SetFont(48);
GUI_SetColor(0x8000FFFF);
//GUI_DispStringAt("\xe9\x9f\xb3\xe9\xa2\x91\xe6\xa0\xbc\xe5\xbc\x8f\xef\xbc\x9a\x6d\x70\x33", 100, 230);
GUI_DispStringAt("音频格式:mp3", 100, 260);
GUI_EnableAlpha(0);
}
|
|