|
本帖最后由 wen 于 2021-5-21 17:11 编辑
- void ShowGIF2(const char * sFilename)
复制代码- {
- int NCode;
- int Id;
- static WM_HMEM timer;
- static u32 i = 0,t0,t1,uiFileSize;
- u32 bw;
- WM_HWIN hItem;
- static GUI_HMEM hMem;
- FRESULT result;
- FIL fp;
- static GUI_GIF_INFO InfoGif;
- GUI_GIF_IMAGE_INFO ImagInfoGif;
-
- static char *_acBuffer = NULL;
- GuiIsrtInfo_t *ptIsrt = &g_tIsrtInfo[0][g_iChannel];
- GUI_RECT rect = {0,534,600,1024};
- switch (pMsg->MsgId)
- {
- case WM_INIT_DIALOG:
- hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
- TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
- TEXT_SetFont(hItem, ptIsrt->pFont);
- TEXT_SetTextColor(hItem, GUI_MAKE_COLOR(ptIsrt->iTopicColor));
- TEXT_SetBkColor(hItem, GUI_MAKE_COLOR(ptIsrt->iTopicBkColor));
- TEXT_SetText(hItem, ptIsrt->cTopic);
- f_open(&fp,"0:/picture/paper_cho.gif", FA_OPEN_EXISTING | FA_READ | FA_OPEN_ALWAYS);
- uiFileSize = f_size(&fp);
- hMem = GUI_ALLOC_AllocZero(uiFileSize);
- /* 将申请到内存的句柄转换成指针类型 */
- _acBuffer = GUI_ALLOC_h2p(hMem);
- /* 读取文件到动态内存 */
- result = f_read(&fp, _acBuffer, uiFileSize, &bw);
- GUI_GIF_GetInfo(_acBuffer, uiFileSize, &InfoGif);
- WM_SelectWindow(pMsg->hWin);
- timer = WM_CreateTimer(pMsg->hWin, 0, 40, 0);
- t0 = GUI_GetTime();
- break;
- case WM_TIMER:
- WM_Invalidate(pMsg->hWin);
- WM_RestartTimer(timer,40);
- break;
- case WM_PAINT:
- if(i < InfoGif.NumImages)
- {
- GUI_GIF_DrawSub(_acBuffer,uiFileSize,97,118,i++);
- }
- else
- {
- i = 0;
- }
- break;
- case GUI_MSG_GOTO_IDTFY_PWD:
-
- printf("GUI_MSG_GOTO_IDTFY_PWD\n");
- WM_DeleteWindow(pMsg->hWin);
- break;
- case WM_DELETE:
- GUI_ALLOC_Free(hMem);
- printf("WM_DELETE\n");
- break;
- default:
- WM_DefaultProc(pMsg);
- break;
- }
- }
复制代码 第一段代码,在桌边直接显示gif 基本正常。
第二段代码,在窗口显示,也能显示,但是有两个问题:显示不清楚、显示速度快很多。
不知道什么原因,搞了一天了。
|
|