|
//bmp图片
GUI_HMEM LCD_show_pic(uint16_t x,uint16_t y,char * sFilename)
{
char *_acBuffer;
int XSize, YSize;
GUI_HMEM hMem;
GUI_MEMDEV_Handle hMemBMP;
taskENTER_CRITICAL();
//GUI_Clear();
#if 1
result = f_mount(&fs, DiskPathSD, 0);
if (result != FR_OK)
{
// 处理文件系统初始化失败的情况
taskEXIT_CRITICAL();
return -1;
}
#endif
/* 打开文件 */
result = f_open(&file, sFilename, FA_READ);
if (result != FR_OK)
{
taskEXIT_CRITICAL();
return -1;
}
/* 申请一块内存空间 并且将其清零 */
hMem = GUI_ALLOC_AllocZero(file.obj.objsize);
if (hMem == NULL) {
/* 关闭文件 */
f_close(&file);
taskEXIT_CRITICAL();
return -1;
}
/* 将申请到内存的句柄转换成指针类型 */
_acBuffer = GUI_ALLOC_h2p(hMem);
/* 读取文件到动态内存 */
result = f_read(&file, _acBuffer, file.obj.objsize, &bw);
if (result != FR_OK || bw != file.obj.objsize)
{
/* 关闭文件 */
f_close(&file);
/* 释放动态内存hMem */
GUI_ALLOC_Free(hMem);
taskEXIT_CRITICAL();
return -1;
}
taskEXIT_CRITICAL();
XSize = GUI_BMP_GetXSize(_acBuffer);
YSize = GUI_BMP_GetYSize(_acBuffer);
hMemBMP = GUI_MEMDEV_CreateEx(x, y, XSize, YSize, GUI_MEMDEV_HASTRANS);//GUI_MEMDEV_HASTRANS
GUI_MEMDEV_Select(hMemBMP);
GUI_BMP_Draw(_acBuffer, x, y);
GUI_MEMDEV_Select(0);
GUI_ALLOC_Free(hMem);
/* 关闭文件 */
f_close(&file);
return hMemBMP;
}
GUI_MEMDEV_Handle hMemBMP;
hMemBMP=LCD_show_pic(X,Y,"picture_path");
GUI_MEMDEV_WriteAt(hMemBMP,X,Y);
红色这两行在任意处调用都能刷出SD卡上的图片吗?X,Y有什么说法
我调用GUI_MEMDEV_WriteAt(hMemBMP,X,Y),XY传非零值都刷不出来图片,但是给0又只能在页面左上角刷图片
|
|