|

楼主 |
发表于 2018-3-8 08:29:23
|
显示全部楼层
/*
*********************************************************************************************************
* 函 数 名: _ShowBMP2
* 功能说明: 显示BMP图片
* 形 参: sFilename 要读取的文件名
* x 要显示的x轴坐标位置
* y 要显示的y轴坐标位置
* 返 回 值: 返回绘制了BMP图片的内存设备句柄。
*********************************************************************************************************
*/
GUI_HMEM _ShowBMP2(const char *sFilename, int x, int y, int xsize, int ysize)
{
char *_acBuffer;
char FileName[64];
int XSize, YSize;
GUI_HMEM hMem;
GUI_MEMDEV_Handle hMemBMP;
/* 打开文件 */
result = f_open(&file, FileName, FA_OPEN_EXISTING | FA_READ | FA_OPEN_ALWAYS);
if (result != FR_OK)
{
return 0;
}
/* 申请一块内存空间 并且将其清零 */
hMem = GUI_ALLOC_AllocZero(file.fsize);
/* 将申请到内存的句柄转换成指针类型 */
_acBuffer = GUI_ALLOC_h2p(hMem);
/* 读取文件到动态内存 */
result = f_read(&file, _acBuffer, file.fsize, &bw);
if (result != FR_OK)
{
return 0;
}
if(xsize)
XSize = xsize;
else
XSize = GUI_BMP_GetXSize(_acBuffer);
if(ysize)
YSize = ysize;
else
YSize = GUI_BMP_GetYSize(_acBuffer);
/* 创建内存设备,并将BMP图片绘制到此内存设备里面,此内存设备要在主程序中用到
所以退出此函数前,不要释放。
*/
hMemBMP = GUI_MEMDEV_CreateEx(x, y, XSize, YSize, GUI_MEMDEV_HASTRANS);
GUI_MEMDEV_Select(hMemBMP);
GUI_BMP_Draw(_acBuffer, x, y);
GUI_MEMDEV_Select(0);
/* 释放动态内存hMem */
GUI_ALLOC_Free(hMem);
/* 关闭文件 */
f_close(&file);
return hMemBMP;
}
void LCD_ShowBMP(const char *sFilename, int x, int y, int xsize, int ysize)
{
GUI_MEMDEV_Handle hMemBMP;
/* 加载BMP图片到内存设备 */
hMemBMP = _ShowBMP2(sFilename, x, y,xsize, ysize);
/* 用到BMP图片的时候,调用此函数即可 */
GUI_MEMDEV_WriteAt(hMemBMP, x, y);
}
调用LCD_ShowBMP(const char *sFilename, int x, int y, int xsize, int ysize) 显示每张图片
|
|