初级会员
- 积分
- 183
- 金钱
- 183
- 注册时间
- 2015-7-16
- 在线时间
- 51 小时
|
10金钱
先贴上程序:
[mw_shl_code=c,true]/*
*********************************************************************************************************
* 函 数 名: _ShowBMP
* 功能说明: 显示 BMP 图片
* 形 参: sFilename 要读取的文件名
* x 要显示的 x 轴坐标位置
* y 要显示的 y 轴坐标位置
* 返 回 值: 返回绘制了 BMP 图片的内存设备句柄。
*********************************************************************************************************
*/
GUI_HMEM _ShowBMP(const char * sFilename, int x, int y)
{
GUI_HMEM hMem;
char *_acBuffer;
UINT bw;
int XSize, YSize;
GUI_MEMDEV_Handle hMemBMP;
/* 打开文件 */
result = f_open(&file, sFilename, FA_OPEN_EXISTING | FA_READ | FA_OPEN_ALWAYS);
if (result != FR_OK)
{
printf("\n文件打开失败!\n");
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)
{
printf("\n图片读取失败!\n");
return 0;
}
XSize = GUI_BMP_GetXSize(_acBuffer);
YSize = GUI_BMP_GetYSize(_acBuffer);
/*
** 创建内存设备,并将 BMP 图片绘制到此内存设备里面,此内存设备要在主程序中用到
** 所以退出此函数前,不要释放。
*/
hMemBMP = GUI_MEMDEV_CreateEx(0, 0, XSize, YSize, GUI_MEMDEV_HASTRANS);
GUI_MEMDEV_Select(hMemBMP);
GUI_BMP_Draw(_acBuffer, 0, 0);
GUI_MEMDEV_Select(0);
GUI_ALLOC_Free(hMem);
f_close(&file);
return hMemBMP;
}
void drawJPG(void)
{
GUI_SetBkColor(GUI_WHITE);
GUI_Clear();
_ShowJPG("0:/1.jpg");
printf("\n显示SD卡图片!\n");
GUI_Delay(100);
}
void drawBMP(void)
{
GUI_MEMDEV_Handle hMemBMP;
GUI_SetBkColor(GUI_WHITE);
GUI_Clear();
hMemBMP = _ShowBMP("0:/sunset.bmp", 0, 0);
GUI_MEMDEV_WriteAt(hMemBMP, 0, 0);
printf("\n显示SD卡图片!\n");
GUI_Delay(100);
}
[/mw_shl_code]
问题就是这句“hMemBMP = GUI_MEMDEV_CreateEx(0, 0, XSize, YSize, GUI_MEMDEV_HASTRANS);”,我通过debug发现函数返回的不是0,但是hMemBMP总是0。
有没有人知道捏?
|
|