初级会员

- 积分
- 78
- 金钱
- 78
- 注册时间
- 2018-7-20
- 在线时间
- 17 小时
|

楼主 |
发表于 2019-3-19 16:42:01
|
显示全部楼层
这个问题已经完美解决
解决的步骤:
1、使用BmpCvt.exe将带有透明度的png或者bmp保存成.dta文件
2、通过文件系统烧写到外部flash中
3、调用流文件接口函数显示图片
流文件接口函数,我自己写了一个,代码如下:
void LCD_ShowBmpDta(const char *sFilename, uint16 x, uint16 y)
{
char *_acBuffer;
GUI_HMEM hMem;
// 打开文件
result = f_open(&file, sFilename, FA_OPEN_EXISTING | FA_READ | FA_OPEN_ALWAYS);
if(FR_OK != result)
{
printf("LCD_ShowBMP 打开失败,错误类型:%d",result);
return;
}
// 申请一块内存空间 并且将其清零
hMem = GUI_ALLOC_AllocZero(file.obj.objsize);
// 将申请到内存的句柄转换成指针类型
_acBuffer = GUI_ALLOC_h2p(hMem);
// 读取文件到动态内存
f_read(&file, _acBuffer, file.obj.objsize, &bw);
if(FR_OK != result)
{
printf("LCD_ShowBMP 读取文件到动态内存失败,错误类型:%d",result);
return;
}
// 启用对所有流位图格式的支持
WIDGET_EnableStreamAuto();
// 流文件显示
GUI_DrawStreamedBitmapAuto(_acBuffer,x,y);
// 释放动态内存hMem
GUI_ALLOC_Free(hMem);
// 关闭文件
f_close(&file);
} |
|