硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3748|回复: 3
收起左侧

[emWin] 使用GUI_BMP_DrawEx函数绘制BMP后emwin内存不会释放

[复制链接]

15

主题

74

回帖

119

积分

初级会员

积分
119
发表于 2020-7-27 14:08:48 | 显示全部楼层 |阅读模式
在背景窗口绘制BMP图片做状态栏,发现使用GUI_BMP_DrawEx函数绘制的BMP图片会占用较大内存,但是手册上说是无需加载到内存,具体程序如下
  1. static int Fm_GetBmpData(void *p,const u8 **ppData,unsigned NumBytesReq,u32 Off)
  2. {
  3.     unsigned int FileAddress;
  4.     UINT NumBytesRead;
  5.     FIL *PicFile;
  6.     PicFile=(FIL *)p;

  7.     if(NumBytesReq>BUFFER_SIZE)
  8.     {//防止越界,即超出Buffer的字数
  9.         NumBytesReq=BUFFER_SIZE;
  10.     }
  11.     if(Off==1)FileAddress=0;
  12.     else FileAddress=Off;
  13.     f_lseek(PicFile, FileAddress);//初始化读取数据的地址
  14.    
  15.     f_read(PicFile, cBuffer, NumBytesReq, &NumBytesRead);

  16.     //让指针指向读取的数据
  17.     *ppData=(const u8 *)cBuffer;
  18.     return NumBytesRead;   
  19. }

  20. void ShowBMP(const char * fileName, int x, int y)
  21. {
  22.     FRESULT res;
  23.     res=f_open(&SDFile, fileName, FA_OPEN_EXISTING|FA_READ|FA_OPEN_ALWAYS);
  24.     if(res!=FR_OK)
  25.     {
  26.         return;
  27.     }
  28.     GUI_BMP_DrawEx(Fm_GetBmpData, &SDFile, x, y);
  29.     f_close(&SDFile);
  30.    
  31. }
  32. //每次绘制图片,只需要将要显示的BMP图片路径已经坐标传入ShowBMP函数就行
复制代码
请问是不是哪里出了问题


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-7-27 15:21:58 | 显示全部楼层
测试的emWin动态内存吗。

调用函数ShowBMP前后分别打印下动态内存看看,连续测试10次。是不是每次都在减少。
回复

使用道具 举报

15

主题

74

回帖

119

积分

初级会员

积分
119
 楼主| 发表于 2020-7-27 16:24:31 | 显示全部楼层
eric2013 发表于 2020-7-27 15:21
测试的emWin动态内存吗。

调用函数ShowBMP前后分别打印下动态内存看看,连续测试10次。是不是每次都在减 ...

按照您说的方法测试,ShowBmp没问题,
不过我现在发现emwin内存损失的原因是我重定向了emiwn的背景窗口,在0,0,320,24这个区域内绘制状态栏,会出现emwin的内存减小,但是也没用什么控件啊,全部用的GUI_XXXXXX类型的函数用来绘制内容,能不能指导下,哈哈
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-7-27 16:36:03 | 显示全部楼层
mmo 发表于 2020-7-27 16:24
按照您说的方法测试,ShowBmp没问题,
不过我现在发现emwin内存损失的原因是我重定向了emiwn的背景窗口 ...

估计是2楼同样的问题,创建删除几次,看看正常不。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-19 07:12 , Processed in 0.321165 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表