硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5452|回复: 2
收起左侧

[emWin] 窗口显示gif

[复制链接]

100

主题

94

回帖

394

积分

高级会员

积分
394
发表于 2021-5-21 16:58:33 | 显示全部楼层 |阅读模式
本帖最后由 wen 于 2021-5-21 17:11 编辑
  1. void ShowGIF2(const char * sFilename)
复制代码
  1. {
  2.   int NCode;
  3.   int Id;

  4.   static WM_HMEM timer;
  5.   static u32 i = 0,t0,t1,uiFileSize;
  6.   u32 bw;
  7.   WM_HWIN  hItem;  
  8.   static  GUI_HMEM hMem;
  9.   FRESULT result;
  10.   FIL     fp;
  11.   static  GUI_GIF_INFO       InfoGif;
  12.   GUI_GIF_IMAGE_INFO ImagInfoGif;
  13.   
  14.   static char *_acBuffer = NULL;
  15.   GuiIsrtInfo_t *ptIsrt = &g_tIsrtInfo[0][g_iChannel];
  16.   GUI_RECT                 rect = {0,534,600,1024};

  17.   switch (pMsg->MsgId)
  18.   {
  19.           case WM_INIT_DIALOG:
  20.             hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
  21.                 TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
  22.                 TEXT_SetFont(hItem, ptIsrt->pFont);
  23.                 TEXT_SetTextColor(hItem, GUI_MAKE_COLOR(ptIsrt->iTopicColor));
  24.                 TEXT_SetBkColor(hItem, GUI_MAKE_COLOR(ptIsrt->iTopicBkColor));
  25.                 TEXT_SetText(hItem, ptIsrt->cTopic);

  26.                 f_open(&fp,"0:/picture/paper_cho.gif", FA_OPEN_EXISTING | FA_READ | FA_OPEN_ALWAYS);
  27.                 uiFileSize = f_size(&fp);
  28.                 hMem = GUI_ALLOC_AllocZero(uiFileSize);
  29.                 /* 将申请到内存的句柄转换成指针类型 */
  30.                 _acBuffer = GUI_ALLOC_h2p(hMem);
  31.                 /* 读取文件到动态内存 */
  32.                 result = f_read(&fp, _acBuffer, uiFileSize, &bw);
  33.                 GUI_GIF_GetInfo(_acBuffer, uiFileSize, &InfoGif);
  34.                 WM_SelectWindow(pMsg->hWin);
  35.                 timer = WM_CreateTimer(pMsg->hWin, 0, 40, 0);
  36.                 t0 = GUI_GetTime();
  37.                 break;
  38.         case WM_TIMER:
  39.                 WM_Invalidate(pMsg->hWin);
  40.                 WM_RestartTimer(timer,40);
  41.                 break;
  42.         case WM_PAINT:
  43.                 if(i < InfoGif.NumImages)
  44.                 {
  45.                         GUI_GIF_DrawSub(_acBuffer,uiFileSize,97,118,i++);
  46.                 }
  47.                 else
  48.                 {
  49.                         i = 0;
  50.                 }
  51.                 break;
  52.         case GUI_MSG_GOTO_IDTFY_PWD:
  53.                
  54.                 printf("GUI_MSG_GOTO_IDTFY_PWD\n");
  55.                 WM_DeleteWindow(pMsg->hWin);
  56.                 break;
  57.         case WM_DELETE:
  58.                 GUI_ALLOC_Free(hMem);
  59.                 printf("WM_DELETE\n");
  60.                 break;
  61.     default:
  62.     WM_DefaultProc(pMsg);
  63.     break;
  64.   }
  65. }
复制代码
第一段代码,在桌边直接显示gif 基本正常。

第二段代码,在窗口显示,也能显示,但是有两个问题:显示不清楚、显示速度快很多。

不知道什么原因,搞了一天了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115806
QQ
发表于 2021-5-22 08:21:29 | 显示全部楼层
直接参考我的得了。我这个是在窗口上绘制的。

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115806
QQ
发表于 2021-5-22 08:22:01 | 显示全部楼层
【安富莱】F429开发板RTOS+emWin+FS+TCP/IP+USB+CAN+Modbus综合Demo已发布(2017-03-21)
http://www.armbbs.cn/forum.php?m ... id=17330&fromuid=58
(出处: 硬汉嵌入式论坛)








回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-20 08:29 , Processed in 0.286899 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表