完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
转stemwin教程
本期教程主要跟大家介绍官方的小工具Font Converter的使用方法,使用官方的字体转换工具,字体的显示效果要比网上那些针对UCGUI设计的字体生成工具好非常多。4位抗锯齿的显示效果更是非常棒。在开头先跟大家强调两点,一个是这个字体小工具必须的使用STemWin软件包里面的,SEGGER官网下载的和MDK安装目录里面带的都是评估版,另一点是在教程中我会要求大家将要显示汉字的C文件转换为UTF-8编码,我仅仅是指的将这个显示汉字的C文件转换为UTF-8编码,这点要切记。 18. 1 使用FontCvt生成字库C文件的方法 18. 2 在开发板上面实现中文显示 18. 3 总结 18.1 使用FontCvt生成字库C文件的方法 我们先讲如何用这个软件生成部分的汉字数据,这里就以“安富莱电子”五个字进行说明。 18.1.1 第一步:打开选择Standard,16bit unicode |
|
相关推荐
|
|
18.1.4 第四步:用unicode软件转换函数
用中文转unicode的小软件得到“安富莱电子”这5个字的unicode编码我这里在百度上面找了一个网页应用。 |
|
|
|
|
|
18.1.5 第五步:在FontCvt上使能这个五个字的编码
在Font Converter软件上面使能这个五个字的unicode编码,以“安”字为例它的unicode编码是5b89,这里有两种办法找这个字。 方法一:直接的在软件里面查找,根据左边的unicode编码。 方法二:通过限制范围查找。 |
|
|
|
|
|
18.2 在开发板上面实现中文显示
下面我们用18.1小节讲的汉字生成方式生成7中类型的字体。前三种是Standard的宋体,大小是16,36和72. 第四种是144*144点阵的,有没有这么大的字体,需要手动往大小选项里面填写144,并选择右侧的Pixels。 |
|
|
|
|
|
主运行函数还是方面MainTask.c文件里面,主程序如下:
复制代码 #include "includes.h" #include "MainTask.h" extern GUI_CONST_STORAGE GUI_FONT GUI_FontSongFont36;(1) extern GUI_CONST_STORAGE GUI_FONT GUI_FontSongFont; extern GUI_CONST_STORAGE GUI_FONT GUI_FontSongFont72; extern GUI_CONST_STORAGE GUI_FONT GUI_FontSongFont144; extern GUI_CONST_STORAGE GUI_FONT GUI_FontSongFontA144; extern GUI_CONST_STORAGE GUI_FONT GUI_FontSongFontAEx144; extern GUI_CONST_STORAGE GUI_FONT GUI_FontSongFontAExF144; /* ********************************************************************************************************* * 创建对话框信息 ********************************************************************************************************* */ static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = { { FRAMEWIN_CreateIndirect, "armfly", 0, 0, 0, 800,480,FRAMEWIN_CF_MOVEABLE,0}, { BUTTON_CreateIndirect, "安富莱", GUI_ID_BUTTON0, 350,20,420,150,0,0}, { TEXT_CreateIndirect, "安富莱电子", GUI_ID_TEXT0, 5, 10, 300, 33, 0,0}, { TEXT_CreateIndirect, "安富莱电子", GUI_ID_TEXT1, 5, 40,250, 50, 0,0}, { TEXT_CreateIndirect, "安富莱", GUI_ID_TEXT2, 5, 100,360, 90, 0,0}, { TEXT_CreateIndirect, "富", GUI_ID_TEXT3, 5, 220,144, 144, 0,0}, { TEXT_CreateIndirect, "富", GUI_ID_TEXT4, 205, 230,144, 144, 0,0}, { TEXT_CreateIndirect, "富", GUI_ID_TEXT5, 405, 230,144, 144, 0,0}, { TEXT_CreateIndirect, "富", GUI_ID_TEXT6, 605, 230,144, 144, 0,0} }; /* ********************************************************************************************************* * 函 数 名: PaintDialog * 功能说明: 对话框重绘函数 * 形 参:pMsg 消息指针 * 返 回 值: 无 ********************************************************************************************************* */ void PaintDialog(WM_MESSAGE * pMsg) { WM_HWIN hWin = pMsg->hWin; } /* ********************************************************************************************************* * 函 数 名: 对话框初始化 * 功能说明: 对话框初始化 * 形 参:pMsg 消息指针 * 返 回 值: 无 ********************************************************************************************************* */ void InitDialog(WM_MESSAGE * pMsg) { WM_HWIN hWin = pMsg->hWin; // //FRAMEWIN // FRAMEWIN_SetFont(hWin,&GUI_Font32B_ASCII); FRAMEWIN_SetTextAlign(hWin,GUI_TA_VCENTER|GUI_TA_CENTER); FRAMEWIN_AddCloseButton(hWin, FRAMEWIN_BUTTON_RIGHT, 0); FRAMEWIN_AddMaxButton(hWin, FRAMEWIN_BUTTON_RIGHT, 1); FRAMEWIN_AddMinButton(hWin, FRAMEWIN_BUTTON_RIGHT, 2); FRAMEWIN_SetTitleHeight(hWin,35); // //GUI_ID_BUTTON0 // GUI_UC_SetEncodeUTF8();(2) BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),&GUI_FontSongFontA144);(3) // //GUI_ID_TEXT0 // TEXT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_TEXT0), GUI_RED); TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0),&GUI_FontSongFont); TEXT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_TEXT1), GUI_GREEN); TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT1),&GUI_FontSongFont36); TEXT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_TEXT2), GUI_BLUE); TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT2),&GUI_FontSongFont72); TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT3),&GUI_FontSongFont144); TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT4),&GUI_FontSongFontAEx144); TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT5),&GUI_FontSongFontA144); TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT6),&GUI_FontSongFontAExF144); // GUI_UC_SetEncodeNone(); } /* ********************************************************************************************************* * 函 数 名: _cbCallback * 功能说明: 对话框回调函数 * 形 参:pMsg 消息指针 * 返 回 值: 无 ********************************************************************************************************* */ static void _cbCallback(WM_MESSAGE * pMsg) { int NCode, Id; WM_HWIN hWin = pMsg->hWin; switch (pMsg->MsgId) { case WM_PAINT: PaintDialog(pMsg); break; case WM_INIT_DIALOG: InitDialog(pMsg); break; case WM_KEY: switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_ESCAPE: GUI_EndDialog(hWin, 1); break; case GUI_KEY_ENTER: GUI_EndDialog(hWin, 0); break; } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch (Id) { case GUI_ID_OK: if(NCode==WM_NOTIFICATION_RELEASED) GUI_EndDialog(hWin, 0); break; case GUI_ID_CANCEL: if(NCode==WM_NOTIFICATION_RELEASED) GUI_EndDialog(hWin, 0); break; } break; default: WM_DefaultProc(pMsg); } } /* ********************************************************************************************************* * 函 数 名: MainTask * 功能说明: GUI主任务 * 形 参:无 * 返 回 值: 无 ********************************************************************************************************* */ void MainTask(void) { GUI_Init(); WM_SetDesktopColor(GUI_WHITE); /* Automacally update desktop window */ WM_SetCreateFlags(WM_CF_MEMDEV); /* Use memory devices on all windows to avoid flicker */ PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX); FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX); PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX); BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX); CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX); DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX); SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX); SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX); HEADER_SetDefaultSkin(HEADER_SKIN_FLEX); RADIO_SetDefaultSkin(RADIO_SKIN_FLEX); GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0); while(1) { GUI_Delay(10); } } |
|
|
|
|
|
1. 通过extern声明要调用的字体。
2. 使能UTF-8解码格式。 3. 使用相关的汉字字体。 4. 运行程序前,一定要保证这个MainTask.c文件的编码格式是UTF-8。有时候经过复制粘贴,网络上传和下载等原因,编码格式不再是UTF-8了。修改编码格式的方法很简单: 实际显示效果如下,显示效果还是非常棒的,特别是抗锯齿字体。 特别注意,如果使用的是800*480分辨率的屏可以完成显示出来,如果是小于这个分辨率的屏只能显示出一部分,大家可以按照上面的设计方法做一个适合自己屏大小的显示或者直接拖动这个对话框即可。 |
|
|
|
|
|
18.3 使用FontCvt生成字库C文件的简单方法
前面18.1小节介绍的方面有点麻烦,这里介绍一种简单的方法。 18.3.1 第一步:建立txt文件,并写入汉字 |
|
|
|
|
|
18.4 总结
本期教程就为大家讲这么多,有兴趣的可以尝试一下其它字体的显示效果。如果大家使用的是IAR的话,现在IAR6.7及其以上的版本可以直接设置UTF-8编码,由于开发板配套的工程统一使用的是IAR6.3,但是IAR6.3按照本期教程的做法会出现乱码,所以没有提供IAR版本的工程代码。 |
|
|
|
|
|
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-移植前准备之git管理内核源码
1919 浏览 0 评论
【瑞萨RA2L1入门学习】+ MacOS安装e2studio
773 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-本地仓库管理之分支间的操作
808 浏览 0 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】3D 图形显示
677 浏览 0 评论
759 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12253 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-4 08:46 , Processed in 0.850264 second(s), Total 101, Slave 84 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号