|
在背景窗口绘制BMP图片做状态栏,发现使用GUI_BMP_DrawEx函数绘制的BMP图片会占用较大内存,但是手册上说是无需加载到内存,具体程序如下
- static int Fm_GetBmpData(void *p,const u8 **ppData,unsigned NumBytesReq,u32 Off)
- {
- unsigned int FileAddress;
- UINT NumBytesRead;
- FIL *PicFile;
- PicFile=(FIL *)p;
- if(NumBytesReq>BUFFER_SIZE)
- {//防止越界,即超出Buffer的字数
- NumBytesReq=BUFFER_SIZE;
- }
- if(Off==1)FileAddress=0;
- else FileAddress=Off;
- f_lseek(PicFile, FileAddress);//初始化读取数据的地址
-
- f_read(PicFile, cBuffer, NumBytesReq, &NumBytesRead);
- //让指针指向读取的数据
- *ppData=(const u8 *)cBuffer;
- return NumBytesRead;
- }
- void ShowBMP(const char * fileName, int x, int y)
- {
- FRESULT res;
- res=f_open(&SDFile, fileName, FA_OPEN_EXISTING|FA_READ|FA_OPEN_ALWAYS);
- if(res!=FR_OK)
- {
- return;
- }
- GUI_BMP_DrawEx(Fm_GetBmpData, &SDFile, x, y);
- f_close(&SDFile);
-
- }
- //每次绘制图片,只需要将要显示的BMP图片路径已经坐标传入ShowBMP函数就行
复制代码 请问是不是哪里出了问题
|
|