硬汉嵌入式论坛

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

[emWin] button用bmp作背景!每次都要打开文件问题

[复制链接]

5

主题

24

回帖

39

积分

新手上路

积分
39
发表于 2016-9-30 10:02:49 | 显示全部楼层 |阅读模式
利用外部的flash中bmp文件来进行作按键背景,

OpenFlashFile("voice_button_play.bmp",&bmp_temp,&bmp_hMen);
BUTTON_SetBMP(WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON0),0,(const void *)bmp_temp);
  GUI_ALLOC_Free(bmp_hMen);   //这句话注释掉就可以正常显示, 当打开时,就无法正常显示。
后来更改为换肤的方法进行制作按键背景,

case WIDGET_ITEM_DRAW_BITMAP:   
        if (pDrawItemInfo->ItemIndex == BUTTON_SKINFLEX_PI_PRESSED)
        {
            
            OpenFlashFile("voice_button_stop_down.bmp",&bmp_temp_ptr,&bmp_hMen);
            GUI_BMP_Draw((const void *)bmp_temp_ptr,0,0);
            GUI_ALLOC_Free(bmp_hMen);   
            bmp_temp_ptr=0;
            
        }
        else if ((pDrawItemInfo->ItemIndex == BUTTON_SKINFLEX_PI_FOCUSSED) ||
            (pDrawItemInfo->ItemIndex == BUTTON_SKINFLEX_PI_ENABLED) ||
            (pDrawItemInfo->ItemIndex == BUTTON_SKINFLEX_PI_DISABLED))
        {
            
            OpenFlashFile("voice_button_play.bmp",&bmp_temp_ptr,&bmp_hMen);
            GUI_BMP_Draw((const void *)bmp_temp_ptr,0,0);
            GUI_ALLOC_Free(bmp_hMen);
            bmp_temp_ptr=0;;
        }
        else BUTTON_DrawSkinFlex(pDrawItemInfo);
这时相应的指针可以释放掉, 但是我在跟踪程序时,按键的状态一发生变化时,都要去读取外部的flash文件, 我怕当界面复杂时,一个个背景从外部flash中读取进行, 会不会引起整个界面的刷新很慢。
大家是怎么做, 能否告之,谢谢!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-9-30 12:13:19 | 显示全部楼层
加载到动态内存后不要释放,只要你一直用,就不能够释放。
建议上电就把需要图片全部加载好,使用的时候直接绘制,要不太影响性能了。
回复

使用道具 举报

3

主题

9

回帖

3

积分

新手上路

积分
3
发表于 2016-9-30 14:49:33 | 显示全部楼层
对,使用中的图片资源不能释放。顺便问一下,按键使用背景图片,为什么只有这个函数BUTTON_SetBMP可以显示出来,另外两个函数都不能正常显示BUTTON_SetStreamedBitmap、BUTTON_SetBitmap
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-10-1 01:10:37 | 显示全部楼层

回 zhang 的帖子

zhang:对,使用中的图片资源不能释放。顺便问一下,按键使用背景图片,为什么只有这个函数BUTTON_SetBMP可以显示出来,另外两个函数都不能正常显示BUTTON_SetStreamedBitmap、BUTTON_SetBitmap (2016-09-30 14:49) 
BUTTON_SetBitmap可以的,用BmpCvt转化出一个C文件就行。https://forum.anfulai.cn/forum.php?mod=viewthread&tid=7253

BUTTON_SetStreamedBitmap这个函数特殊点,也是可以的。
回复

使用道具 举报

5

主题

24

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2016-10-8 10:02:44 | 显示全部楼层
谢谢! 谢谢! 就是小图标太多了, 这样变成指针太多了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-17 23:51 , Processed in 0.038973 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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