|
特别说明:pdf版60期emWin教程已经发布:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=2932
armfly-x2,x3,v2,v3,v5开发板裸机和带系统的emWin工程已经全部建立,链接如下:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=1830
一些打算学习emWin的初学者不用担心,现在前面这几期例子,不用理解为什么这么做,只需会调用相应的API函数
就可以了随着后面几期的进行,会逐渐讲这方面的东西,现在要做的就是熟练的使用这些API函数。
本期主要讲emWin支持的GIF图片的显示,官方支持的主要有两种显示方法,一种是从外部存储器读取数据到内部存
储器然后来显示图片,这种的显示速度要快些,另一种方法是直接从外部存储器读取数据并显示,这种办法的好处就是不要
大的RAM需求,每次读取一些数据显示一次,坏处就是显示速度比较的慢。
这里将2MB的外部SRAM做为emWin的动态内存。
GUI_GIF_DrawSubEx() 绘制无需加载到存储器的GIF文件的给定子图像
这个GIF格式的图片稍稍有点大,有2.6M, 刷新的时候不是很快
GUI_GIF_DrawSub() 绘制已加载到存储器的GIF文件的给定子图像
GUI_GIF_DrawSubScaled() 绘制已加载到存储器的带比例的GIF文件的给定子图像。这里是放大了3倍
本期分为三个小节:
9. 1 GIF函数说明(手册上面有一个错误一直没有改过来)
9. 2 移植到armfly - v5开发板上面
9. 3 实验总结
9. 1 GIF函数说明
9.1.1 GIF文件
20世纪80年代,CompuServe Information Service开发出了GIF文件格式(图形交换格式)。它设计用于
跨数据网络传输图像。GIF标准支持隔行扫描、透明、应用定义数据、动画以及原始文本渲染。emWin将忽略
原始文本或应用特定数据等不受支持的数据。文件使用LZW (Lempel-Zif-Welch)文件压缩方法来压缩图像数据。
这种压缩方法运行起来不会丢失数据。输出图像与输入图像完全相同。
图形库首先对图形信息进行解码。如果必须绘制图像,解码流程将花费相当长的时间。如果在窗口管理器经
常调用的callback例程中使用GIF文件,则解码流程可能花费相当长的时间。通过使用存储设备可缩短计算时间。
最好的方法是先将图像绘制到存储设备中。在这种情况下,将只进行一次解压缩。
emWin的GIF解压缩例程大约需要16千字节动态分配的RAM进行解压缩。绘制图像后,将释放用于解压缩的
RAM。
9.1.2 GIF库函数
这里有一点要说明一下,GUI_GIF_Draw()和GUI_GIF_DrawEx()只能绘制GIF文件的第一个图像,绘制GIF文件
的子图像有专门的函数GUI_GIF_DrawSub()和GUI_GIF_DrawSubEx(),这里着重的说一下获取GIF图像信息的两个
函数GUI_GIF_GetInfo(),看一下这个函数能得到GIF图像的什么信息,关于这个函数,手册上面有一个错误,现在
的5.22版本也没有改过来,红方块里面X,Y大小的变量应该是xSize和ySize,这里要切记
还有一个函数就是GUI_GIF_GetImageInfo,这样是在绘制子图像的时候用的。
9.1.2 如何绘制GIF图像
下面以绘制加载到内部存储器的函数为例
GUI_GIF_GetInfo(_acBuffer2, file.fsize, &InfoGif1);
while(1)
{
if(i < InfoGif1.NumImages)
{
GUI_GIF_GetImageInfo(_acBuffer2, file.fsize, &InfoGif2, i);
GUI_GIF_DrawSub(_acBuffer2,
file.fsize,
(LCD_GetXSize() - InfoGif1.xSize)/2,
(LCD_GetYSize() - InfoGif1.ySize)/2,
i++);
/* 这个函数要注意,主要是设置每个GIF子图像的时间间隔的。*/
GUI_X_Delay(InfoGif2.Delay*10);
}
else
{
i = 0;
}
}
9. 2 移植到armfly - v5开发板上面
程序里面有一个地方注意一下就可以了,这里使用了条件编译将两种显示方法做了区分。
#if 1
/* 绘制无需加载到存储器的GIF文件 */
_ShowGIFEx("2.gif");
#else
/* 绘制已加载到存储器的GIF文件 */
_ShowGIF("4.gif"); #endif
9. 3 实验总结
整体来说显示GIF的速度还算可以,不过刷图片依然不是很给力。
SD卡中需要放的图片
SD卡根目录下.zip
(2.74 MB, 下载次数: 504)
程序下载
第九期:STemWin5.20+uCOS-III+FatFS.zip
(15.78 MB, 下载次数: 944)
|
|