|
|
使用GUI_ALLOC_GetNumFreeBytes查询得到的空间还很大,GUI_ALLOC_GetNumUsedBytes使用的空间比较小;
另外有个很奇怪的情况GUI_SetDefaultFont设置加载的ttf字库好像不起作用?需要使用TEXT_SetDefaultFont,BUTTON_SetDefaultFont之类的,按钮和文本才能正常显示中文;
通过appwizard创建字体库的形式,程序能够正常运行,难道是通过加载外部ttf字体库程序出的问题?
大佬们帮忙看看代码:
char *ttffontbuffer = 0;
GUI_TTF_CS ttfcs0;
GUI_TTF_DATA ttfdata;
GUI_FONT fontttf36;
uint8_t createTTF(const char *filename)
{
FIL fp;
/* 打开文件 */
FRESULT res = f_open(&fp, filename, FA_OPEN_EXISTING | FA_READ);
if (res != FR_OK)
{
printf("open %s ttf err\r\n", filename);
return 0;
}
uint32_t fsize = f_size(&fp);
/* 申请一块动态内存空间 */
GUI_HMEM hmem = GUI_ALLOC_AllocZero(fsize);
/* 转换动态内存的句柄为指针 */
ttffontbuffer = GUI_ALLOC_h2p(hmem);
uint32_t br = 0;
/* 读取内容 */
res = f_read(&fp, ttffontbuffer, fsize, &br);
if (res != FR_OK)
{
printf("read %s ttf err\r\n", filename);
f_close(&fp);
GUI_ALLOC_Free(hmem);
return 0;
}
f_close(&fp);
printf("read font %s size: %d\r\n", filename, fsize);
/* 链接TTF数据 */
ttfdata.pData = ttffontbuffer;
ttfdata.NumBytes = fsize;
/* 配置字体参数 */
ttfcs0.pTTF = &ttfdata;
ttfcs0.PixelHeight = 36;
ttfcs0.FaceIndex = 0;
GUI_TTF_CreateFontAA(&fontttf36, &ttfcs0);
return fsize;
}
在GUI_X_Config分配好内存后调用:
GUI_SetDefaultFont(&fontttf36);
TEXT_SetDefaultFont(&fontttf36);
BUTTON_SetDefaultFont(&fontttf36);
LISTVIEW_SetDefaultFont(&fontttf36);
|
|