完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
21.2 移植到开发板上显示
移植到开发上的程序主要分为两部分,一个是从SD卡中读取字体加载到外部SRAM里面,另一个建立一个对话框显示字体。 21.2.1 创建SIF字体 复制代码 /* ********************************************************************************************************* * 函 数 名: MainTask * 功能说明: GUI主函数 * 形 参:无 * 返 回 值: 无 ********************************************************************************************************* */ void MainTask(void) { OS_ERR err; char *_acBuffer; _acBuffer = (char *)EXT_SRAM_ADDR; (1) GUI_Init(); /* 打开文件 */ OSSchedLock(&err);(2) result = f_open(&file, "son.sif", FA_OPEN_EXISTING | FA_READ | FA_OPEN_ALWAYS); result = f_read(&file, _acBuffer, file.fsize, &bw);(3) OSSchedUnlock(&err); GUI_SIF_CreateFont(_acBuffer, &SIF_Font, GUI_SIF_TYPE_PROP);(4) WM_SetDesktopColor(GUI_WHITE); WM_SetCreateFlags(WM_CF_MEMDEV); 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(100); } } 1. 指针变量指向外部SRAM首地址。 2. 加上调度锁,防止从SD卡中加载数据到SRAM时出错 3. 从SD卡中加载数据到外部SRAM中。 4. 创建SIF字体 |
|
|
|
|
|
21.2.2 主函数
复制代码 GUI_FONT SIF_Font; /* ********************************************************************************************************* * 对话框信息 ********************************************************************************************************* */ static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = { { FRAMEWIN_CreateIndirect, "安富莱电子论坛欢迎大家", 0, 0, 0, 800,480,FRAMEWIN_CF_MOVEABLE,0}, { BUTTON_CreateIndirect, "安富莱电子www.armfly.com", GUI_ID_BUTTON0, 390,40,360,100,0,0}, { TEXT_CreateIndirect, "安富莱电子www.armfly.com", GUI_ID_TEXT0, 5, 10, 300, 40, 0,0}, { TEXT_CreateIndirect, "安富莱电子www.armfly.com", GUI_ID_TEXT1, 5, 50,300, 40, 0,0}, { TEXT_CreateIndirect, "安富莱电子www.armfly.com", GUI_ID_TEXT2, 5, 90,300, 40, 0,0}, { TEXT_CreateIndirect, "安富莱电子www。armfly。com", GUI_ID_TEXT3, 5, 159,500, 40, 0,0} }; /* ********************************************************************************************************* * 函 数 名: PaintDialog * 功能说明: 重绘函数 * 形 参:pMsg 消息指针 * 返 回 值: 无 ********************************************************************************************************* */ void PaintDialog(WM_MESSAGE * pMsg) { WM_HWIN hWin = pMsg->hWin; } /* ********************************************************************************************************* * 函 数 名: InitDialog * 功能说明: 对话框初始化 * 形 参:pMsg 消息指针 * 返 回 值: 无 ********************************************************************************************************* */ void InitDialog(WM_MESSAGE * pMsg) { WM_HWIN hWin = pMsg->hWin; // //FRAMEWIN // FRAMEWIN_SetFont(hWin,&SIF_Font); 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(); (1) BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),&SIF_Font);(2) // //GUI_ID_TEXT0 // TEXT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_TEXT0), GUI_RED); TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0),&SIF_Font); TEXT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_TEXT1), GUI_GREEN); TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT1),&SIF_Font); TEXT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_TEXT2), GUI_BLUE); TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT2),&SIF_Font); TEXT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_TEXT2), GUI_YELLOW); TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT3),&SIF_Font); // GUI_UC_SetEncodeNone(); } /* ********************************************************************************************************* * 函 数 名: _cbCallback * 功能说明: 对话框回调函数 * 形 参:无 * 返 回 值: 无 ********************************************************************************************************* */ 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); } } |
|
|
|
|
|
1. 使能UTF-8解码。
2. 使用SIF字体,其它控件类似。 3. 特别注意这个程序是在MainTask.c文件里面实现的,这个文件的编码格式必须得是UTF-8,设置方法看前面18.1.6小节。 实际显示效果如下: 特别注意,如果使用的是800*480分辨率的屏可以完成显示出来,如果是小于这个分辨率的屏只能显示出一部分,大家可以按照上面的设计方法做一个适合自己屏大小的显示或者直接拖动这个对话框即可。 |
|
|
|
|
|
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11793 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 22:32 , Processed in 0.639105 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号