圖解UCGUI3.90實現GIF動畫顯示全過程
uc/GUI嵌入式圖形系統不依賴于uc/os,可以輕松在中高端微控制器上移植成功,具體的移植過程網上已經有很多,按照步驟來大多能成功。目前來說實現雖然uc/gui3.90并不是最新的版本,但卻是入門使用的不二選擇,是比較經典的版本,網上的教程也較多,適合新手學習。
本文引用地址:http://www.104case.com/article/272288.htmuc/GUI3.98版本中實現了GIF動畫顯示,比較有意思,但是3.90版本里面并沒有實現此功能,今天就一步步教你在ucGUI3.90版本中實現GIF動畫顯示。
一、 準備工作
首先準備好一個工程,要求工程已經實現了UCOS-II和UCGUI3.90的移植。
下載UCGUI3.98版本。
根據你所選擇的液晶的大小,到網上下載一個GIF圖片,在百度圖片里面有很多。
二、 GIF圖片數據提取
在ucgui3.90的下載包里面,有一個tool文件夾,里面有一些小工具,這里我們要用到的是Bin2C.exe。雙擊打開。如下圖所示,選擇select file,找到你下載的GIF圖片,然后點擊Convert進行數據轉換,轉換出來的是一個.C文件,里面是一個數組,比較大,存儲了GIF圖片的信息。
下圖是轉換出來的數據,注意看這個數組的第6、7位和第8、9位,第6、7位值為0X40、0X01,代表的是圖片的寬度是320個像素點,也就是0x0140,轉換成十進制就是320,同理8、9位是高度信息,0X01E0是480。有的時候在網上找到的圖片信息并不準確,所以要以轉換出來的數據為準。
三、 移植
之前已經說過了,3.90版本不支持GIF解碼,所以我們要把3.98版本里面與GIF相關的部分移植過來。
在3.98版本目錄: uC-GUI3.98StartGUICore下找到GUI_Gif.c文件。復制到3.90的該目錄下。
在目錄: uC-GUI3.98SampleGUI下面已經給我們提供了一個官方例程,
把這個文件添加到我們的工程當中。
然后你會發現MDK會報錯,因為有一些和GIF相關的結構體類型及函數是未被定義的,在GUI.h頭文件中添加如下聲明。
在GUIType.h中添加如下定義
再然后調用2DGL_DrawGif.C里面的MainTask()函數,就可以看到效果了。
四、 顯示自己的GIF圖片
把你自己生成的GIF數據復制出來替換2DGL_DrawGif.C里面的數組可以顯示,但是有事圖片數據很多,數組很大,放在文件里面不便于管理,所以我們直接把生成的.C文件添加到工程當中,
當然這樣加進來還不行,
還要在2DGL_DrawGif.C 文件中聲明外部數組,
extern unsigned const char gif_dat_1[];
因為數組較大,所以我們無法事先確定數組的大小,但是函數
_ShowMovie(*p,length);的第二個參數要求我們傳遞數組的大小,所以我們需要處理一下,在gif_dat.c里面定義一個全局變量
long gif_dat1_len=sizeof(gif_dat_1);
然后在2DGL_DrawGif.C中聲明一下。
extern long gif_dat1_len;
OK!!!大功告成!!!上個圖。
說明:MainTask()函數里面的_ShowComments(),_ShowSubImages()這兩個函數用不到可以屏掉。
還有_ShowMovie(const char * pFile, long FileSize)函數可能還需要你根據實際情況適當修改。這個就自己來吧,祝你好運!!!
評論