|
我将图片保存在SD卡中,然后采用流位图的方式显示,但是程序总是卡在GUI_DrawStreamedBitmapAuto函数地方,不知道是哪没有弄对?
程序如下:
static void GUI_BKPic_Draw(uint8_t x, uint8_t y)
{
FILE *fout;
FINFO info;
char *buffer;
uint8_t result;
GUI_HMEM hMem;
result = finit("M0:");
info.fileID = 0;
result = ffind("M0:\\BKPic.dta", &info);
hMem = GUI_ALLOC_AllocZero(info.size);
buffer = GUI_ALLOC_h2p(hMem);
fout = fopen("M0:\\BKPic.dta", "r");
if (fout == NULL)
{
return;
}
result = fread(buffer, 8, info.size, fout);
fclose(fout);
GUI_DrawStreamedBitmapAuto(buffer, x, y);
GUI_ALLOC_Free(hMem);
}
void MainTask(void)
{
/* 初始化 */
GUI_Init();
WM_MULTIBUF_Enable(1); /* 开启多缓冲 */
WM_MOTION_Enable(1); /* 使能滑动 */
WM_MOTION_SetDefaultPeriod(20);
GUI_UC_SetEncodeUTF8(); /* 要显示中文 */
/* 显示游标 */
GUI_CURSOR_Show();
/* 绘制背景图片 */
hMemBKPic = GUI_MEMDEV_CreateFixed(0, 0, 800, 480,
GUI_MEMDEV_HASTRANS,
GUI_MEMDEV_APILIST_16,
GUICC_M565);
GUI_MEMDEV_Select(hMemBKPic);
GUI_BKPic_Draw(0 ,0);
/* 绘制位图图标 */
GUI_DrawBitmap(&bmtemperature,100, 100);
GUI_MEMDEV_CopyToLCD(hMemBKPic);
while(1)
{
GUI_Delay(100);
}
}
整改过程中,result是正确的,info.size的值也是正确的(大小和文件大小一样),说明文件系统这块没有问题 |
|