图解UCGUI3.90实现GIF动画显示全过程
uc/GUI嵌入式图形系统不依赖于uc/os,可以轻松在中高端微控制器上移植成功,具体的移植过程网上已经有很多,按照步骤来大多能成功。目前来说实现虽然uc/gui3.90并不是最新的版本,但却是入门使用的不二选择,是比较经典的版本,网上的教程也较多,适合新手学习。
本文引用地址:http://www.amcfsurvey.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)函数可能还需要你根据实际情况适当修改。这个就自己来吧,祝你好运!!!
评论