硬汉嵌入式论坛

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

[emWin] 使用官方BmpCvt转换BMP带透明功能。

[复制链接]

334

主题

2033

回帖

3040

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3040
发表于 2015-10-24 12:10:56 | 显示全部楼层 |阅读模式
emwin的标准包里面带图片到C的转换软件,可以把图片转换成C的数组,显示的时候直接调用 GUI_DrawBitmap(&xxx,0,0);即可。

armfly推荐过使用专业图像软件转换透明效果,但是方法相对繁琐,还得找破解软件,破费周折。经过尝试,emwin自带的BmpCvt可以做到透明效果。

这个例子的背景,需要显示特殊字体或符号的组合,比如草体,上下标之类的,不好弄字库,就把它做成图片,图片的白色是背景。但是实际应用中的窗口是灰色是背景。
如果直接显示普通图片,一块白色方块镶嵌在灰色窗口中非常难看。于是,希望Bmp图片中的白色全部识别为透明。

1. 载入图片,选择convert到调色板+透明
2. 设置透明颜色。一般情况下用背景的白色比较好,选择颜色代码0xffffff。(如果图片背景是纯蓝纯红,那就设定透明颜色为纯蓝纯红)

变换到调色板+透明功能

变换到调色板+透明功能


3.  可以看到状态栏中显示了目前的调色板和透明色的设定。

图片状态

图片状态


4.选择存储为C文件。必须选第一项,8bit per pixel 。 千万不能选M565之类的。

存储C文件时蹦出来的格式选择框

存储C文件时蹦出来的格式选择框


5. 检查生成的C文件,其中图片数据的数组中有大量的0x00,这个就代表调色板的透明色!
emwin在现实这个图片的时候,碰到这个0,就不做任何动作,你看到的还是窗口的原始背景色。

C代码

C代码


小提示: 偶尔转换后会发现数组中没有0x00,却有大量的0x01。估计是原图的白色不纯,带灰度,但是人眼看不出来。
可以用查找-替换的方法把0x01全部替换为0x00就好了。
显示效果对比:

普通效果

普通效果

透明效果

透明效果
回复

使用道具 举报

334

主题

2033

回帖

3040

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3040
 楼主| 发表于 2015-10-24 12:19:17 | 显示全部楼层
补充一点信息,存储C文件的时候,也可以使用第二个格式,带压缩的。 实际显示// 1122 bytes for 3145 pixels ,说明用1122个字节存储了3145个点。

貌似这个压缩很简单。不压缩的话,数组里面存储的是每个点的颜色数据;压缩后,存储的是“个数,颜色”。

ScreenHunter_145 Oct. 24 12.14.jpg
回复

使用道具 举报

4

主题

64

回帖

76

积分

初级会员

积分
76
发表于 2015-10-24 13:17:31 | 显示全部楼层
ICONworkshow,我找了很久,都没有破解方法,后来偶然找到一个软件,IconLover,很好用
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106832
QQ
发表于 2015-10-25 08:30:57 | 显示全部楼层
非常感谢版主分享[s:151]
回复

使用道具 举报

3

主题

6

回帖

3

积分

新手上路

积分
3
发表于 2015-11-3 19:12:36 | 显示全部楼层

回 eric2013 的帖子

eric2013:非常感谢版主分享[s:151]  (2015-10-25 08:30) 
为啥我用bmpcvt打开几张图片 都是提示illegal file header的?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106832
QQ
发表于 2015-11-4 00:45:43 | 显示全部楼层

回 marco_chan 的帖子

marco_chan:为啥我用bmpcvt打开几张图片 都是提示illegal file header的? (2015-11-03 19:12) 
楼主提供的方法我还没有尝试,如果你使用楼主的方法不太好用的话,就还使用我们60期emWin教程里面提供的IconWorkshop软件,这个软件你可以在我们V5开发板的网盘里面下载,论坛置顶帖有网盘地址。
回复

使用道具 举报

0

主题

87

回帖

206

积分

高级会员

积分
206
发表于 2016-1-13 17:59:38 | 显示全部楼层
非常感谢版主分享[s:152]
回复

使用道具 举报

14

主题

78

回帖

120

积分

初级会员

积分
120
发表于 2016-8-21 18:01:56 | 显示全部楼层
窗口背景是灰色的,不知道能否设成白色?
回复

使用道具 举报

7

主题

70

回帖

91

积分

初级会员

积分
91
发表于 2018-8-6 20:43:47 | 显示全部楼层
好东东,收藏了
回复

使用道具 举报

5

主题

24

回帖

39

积分

新手上路

积分
39
发表于 2018-9-18 15:23:52 | 显示全部楼层
不行............................................
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106832
QQ
发表于 2018-9-19 02:57:08 | 显示全部楼层
jlian168 发表于 2018-9-18 15:23
不行............................................

学习新版emWin教程的BMP章节

http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 16:21 , Processed in 0.197433 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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