|
- int LoadBitMapToMemDev(GUI_MEMDEV_Handle *hpMenDev ,const char *pcFilename,int iXsize,int iYsize)
- {
- GUI_BITMAP bmp;
- GUI_LOGPALETTE palette;
- GUI_HMEM hMem;
- FIL file;
- int filesize;
- int result;
- int bw;
- char* _acBuffer;
- result = f_open(&file, pcFilename, FA_OPEN_EXISTING | FA_READ | FA_OPEN_ALWAYS);
- if (result != FR_OK)
- {
- ERROR("f_open(%s) =%d\n",pcFilename,result);
- return ERR_FILE;
- }
- filesize = f_size(&file);
- hMem = GUI_ALLOC_AllocZero(filesize);////申请一块内存空间,并将其清零
- _acBuffer = GUI_ALLOC_h2p(hMem);////将申请到的内存句柄转换成指针类型
- result = f_read(&file, _acBuffer, filesize, &bw);
- if (result != FR_OK)
- {
- ERROR("f_read(%s) =%d\n",pcFilename,result);
- f_close(&file);
- GUI_ALLOC_Free(hMem);
- return ERR_FILE;
- }
- GUI_CreateBitmapFromStream(&bmp, &palette, _acBuffer);
- /*创建内存设备,并将 BMP 图片绘制到此内存设备里面,此内存设备要在主程序中用到,不要释放*/
- *hpMenDev = GUI_MEMDEV_CreateFixed(0,0,iXsize,iYsize,GUI_MEMDEV_HASTRANS,GUI_MEMDEV_APILIST_32,GUI_COLOR_CONV_8888);
- GUI_MEMDEV_Select(*hpMenDev);
- GUI_SetBkColor(GUI_TRANSPARENT);
- GUI_Clear();
- GUI_DrawBitmap(&bmp, 0, 0);
- GUI_MEMDEV_Select(0);
- GUI_ALLOC_Free(hMem);
- f_close(&file);
- return ERR_NONE;
- }
复制代码 请看代码和两张图。实验效果和原始图的差异怎么消除?
|
-
原始图片
-
|