|
近几天在调试xbf外置字库方式显示汉字,现在汉字可以单独显示,但是还不能再控件上使用。
具体的过程如下:
使用FontCvt工具,生成的xbf文件,包含3500汉字和ASCII字符,设置选项是Standrad,宋体,16Pixels。
生成的文件大小是400KB左右,下载到SST25VF080B(容量为1MB)。
接下来参考的是 这个帖子 http://www.armbbs.cn/forum.php?mod=viewthread&tid=3329 中的方法
新建一个文件 hz_16.c,内容如下:- #include <stddef.h>
- #include "gui.h"
- #include "fonts.h"
- #include "bsp_flash.h"
- GUI_XBF_DATA XBF_Data_hz16; /* GUI_XBF_DATA structure in RAM */
- GUI_FONT xbfFont_hz16; /* GUI_FONT structure in RAM */
- static int _cbGetData(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer)
- {
- if((pBuffer == NULL) || (NumBytes == 0))
- { return 1; }
- SPI_Flash_Read(pBuffer, Off, NumBytes);
- return 0;
- }
- void CreateXBF_Font(void)
- {
- GUI_XBF_CreateFont( &xbfFont_hz16, /* Pointer to GUI_FONT structure */
- &XBF_Data_hz16, /* Pointer to GUI_XBF_DATA structure */
- GUI_XBF_TYPE_PROP, /* Font type to be created */
- _cbGetData, /* Pointer to callback function */
- NULL); /* Pointer to be passed to callback */
- }
复制代码 这里需要注意的一点就是 "GUI_XBF_TYPE_PROP"这个参数的值与你选择的字体类型有关
例如Standrad,对应的就是GUI_XBF_TYPE_PROP
在fonts.h中添加了两个函数的声明 和 两个结构体的声明 ,在主函数所在的文件中包含fonts.h
主程序的代码如下:- int main(void)
- {
- BSP_Init();
- GUI_Init();
- GUI_SetBkColor(GUI_WHITE);
- GUI_SetColor(GUI_RED);
- GUI_Clear();
-
- CreateXBF_Font(); //创建XBF字体
- GUI_UC_SetEncodeUTF8(); //一定要设置这个
- GUI_SetFont(GUI_FONT_6X8_ASCII);
- GUI_DispStringAt("GUI Start Succ!", 7, 4);
- GUI_SetFont(&xbfFont_hz16); //设置XBF字库为当前字体
- GUI_DispStringAt("汉字显示测试OK!", 150, 250); //
- GUI_DispStringAt("123ABC四五六七.", 150, 280);
-
- GUI_SetFont(&GUI_Font24_ASCII);
- GUI_DispStringAt("Hello world!",20,40);
- while(1)
- {
- _DemoButton();
- }
- }
- static void _DemoButton(void)
- {
- BUTTON_Handle hButton;
- GUI_SetFont(&GUI_Font8x16);
- GUI_DispStringHCenterAt("Hello world!",160,90);
-
- hButton = BUTTON_Create(110,110,100,40,GUI_ID_OK,WM_CF_SHOW);
- GUI_SetFont(&xbfFont_hz16);
- BUTTON_SetText(hButton,"点我");
- while(GUI_WaitKey() != GUI_ID_OK);
- BUTTON_Delete(hButton);
- GUI_ClearRect(0,50,319,239);
- GUI_Delay(1000);
- }
复制代码 现在的现象是 两个英文字符串 和 两个中文字符串 都可以正常显示,按钮上的汉字无法显示。
有谁了解这个吗?请求指导。 |
|