OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 21736|回复: 34

分享一下EMWIN自定义按钮和透明图标的制作

[复制链接]

30

主题

158

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1525
金钱
1525
注册时间
2015-11-11
在线时间
163 小时
发表于 2017-8-10 15:23:59 | 显示全部楼层 |阅读模式
最近在研究Emwin时,想打算做个漂亮的界面,但是当做按钮的时候,发现了emwin自带的按钮效果很一般,不能很好的融入到界面里,于是在网上找了些资料,研究了下emwin自定义的按钮效果,分享给大家,希望大家也能做出更漂亮的界面。
先来个效果图:
1.png
由于大家都是程序员,所以不推荐自己制作图标,可以去 http://www.easyicon.net/  下载图标,里面有各种各样的图标,选择png格式的。
然后用emwin小工具 BmpCvt.exe来转换成C语言。具体步骤如下:
2.png 3.png 4.png 5.png 6.png

但是,说的就是这个但是,有的png图片用BmpCvt打开是这样的,

7.png

这样的图片转换成c文件后贴到emwin里是这样的


1.jpg

这肯定不是我们想要的效果。那么如何让这种图片的背景变成透明的呢,继续教大家


8.png 9.png 10.png
这几步完成后,就另存图片为png格式,或者bmp格式都行,bmp的要存成32位的。而且bmp图片可以用在没有emwin的项目里作为贴图,具体参考原子哥的例程,这里不做讲解,只讲emwin部分
然后再用bmpCvt打开,我们想要的图片效果就出来了。
11.png
接下来就是按钮自定义了,效果见第一张图,如果没有自定义按钮的效果,仅仅只是给按钮贴了个图,那么按钮的样子就会是第一张图的第三种效果。
具体怎么弄就不讲解了,直接贴代码给大家看。

代码和工具.zip (154.07 KB, 下载次数: 1448)
好好学习
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
发表于 2019-2-26 20:08:34 来自手机 | 显示全部楼层
光做图标有什么用,让UI去做.我就问你你用emwin的png相关API可以显示出透明的png图片吗。
回复 支持 0 反对 1

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2017-6-1
在线时间
14 小时
发表于 2017-8-10 19:37:10 | 显示全部楼层
大恩不言谢,@wcyingdream
回复 支持 反对

使用道具 举报

3

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
308
金钱
308
注册时间
2015-4-4
在线时间
108 小时
发表于 2017-8-10 22:11:58 | 显示全部楼层
怎么没人点赞,不错的方法,楼主知道如果选择成光标聚焦的时候怎么做吗
回复 支持 反对

使用道具 举报

30

主题

158

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1525
金钱
1525
注册时间
2015-11-11
在线时间
163 小时
 楼主| 发表于 2017-8-11 09:46:11 | 显示全部楼层
罗马的猫 发表于 2017-8-10 19:37
大恩不言谢,@wcyingdream

希望能帮到你              
好好学习
回复 支持 反对

使用道具 举报

30

主题

158

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1525
金钱
1525
注册时间
2015-11-11
在线时间
163 小时
 楼主| 发表于 2017-8-11 09:47:09 | 显示全部楼层
guosheng5688 发表于 2017-8-10 22:11
怎么没人点赞,不错的方法,楼主知道如果选择成光标聚焦的时候怎么做吗

这个还没研究过   
好好学习
回复 支持 反对

使用道具 举报

2

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
477
金钱
477
注册时间
2016-10-21
在线时间
88 小时
发表于 2017-8-11 09:51:33 | 显示全部楼层
楼主好人呀!~~~最近正在弄这个,越看越觉得按钮比较丑,一下子有希望改变了hahha
回复 支持 反对

使用道具 举报

30

主题

158

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1525
金钱
1525
注册时间
2015-11-11
在线时间
163 小时
 楼主| 发表于 2017-8-11 10:31:29 | 显示全部楼层
Crime毛豆 发表于 2017-8-11 09:51
楼主好人呀!~~~最近正在弄这个,越看越觉得按钮比较丑,一下子有希望改变了hahha

到时候做个漂亮的界面也来论坛发个帖子
好好学习
回复 支持 反对

使用道具 举报

8

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2017-6-22
在线时间
70 小时
发表于 2017-8-29 22:16:02 | 显示全部楼层
楼主怎么在位图上添加按钮, 按钮不是需要一个窗口吗,这样不会吧位图覆盖了吗,还是说按钮可以单独使用啊
回复 支持 反对

使用道具 举报

25

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-8-23
在线时间
50 小时
发表于 2017-9-17 21:14:56 | 显示全部楼层
谢谢分享                          
回复 支持 反对

使用道具 举报

25

主题

161

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
269
金钱
269
注册时间
2017-7-17
在线时间
149 小时
发表于 2017-9-17 21:31:23 | 显示全部楼层
赞一个~
回复 支持 反对

使用道具 举报

30

主题

158

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1525
金钱
1525
注册时间
2015-11-11
在线时间
163 小时
 楼主| 发表于 2017-9-18 09:29:39 | 显示全部楼层
黯夜泡沫 发表于 2017-8-29 22:16
楼主怎么在位图上添加按钮, 按钮不是需要一个窗口吗,这样不会吧位图覆盖了吗,还是说按钮可以单独使用啊

是在按钮上添加位图
好好学习
回复 支持 反对

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-9-25
在线时间
17 小时
发表于 2018-5-18 10:28:53 | 显示全部楼层
希望能帮我。
回复 支持 反对

使用道具 举报

6

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
金钱
203
注册时间
2013-8-15
在线时间
44 小时
发表于 2018-6-4 15:16:55 | 显示全部楼层
请教楼主,我现在显示底色为透明的ICON图标,但是实际结果是,图标下面始终有底色怎么办呢?(我两个ICON图标都不需要底色,要透明)
代码如下:
case WM_INIT_DIALOG:
……
                hItem = WM_GetDialogItem(pMsg->hWin, ID_ICONVIEW_1);
                //pData = _GetImageById(ID_ICONVIEW_0_IMAGE_0, &FileSize);
                //ICONVIEW_AddStreamedBitmapItem(hItem, pData, "");
                ICONVIEW_SetIconAlign(hItem, ICONVIEW_IA_TOP);
                //ICONVIEW_SetTextColor(hItem, ICONVIEW_CI_UNSEL, GUI_BLUE);
                //ICONVIEW_SetTextColor(hItem, ICONVIEW_CI_SEL, GUI_GREEN);
                //ICONVIEW_SetBkColor(hItem, ICONVIEW_CI_UNSEL, GUI_BLUE);
                ICONVIEW_SetFrame(hItem, GUI_COORD_X, 0);//设置图标到IconView边框的间距
                ICONVIEW_SetFrame(hItem, GUI_COORD_Y, 0);
                ICONVIEW_SetFont(hItem, GUI_FONT_8_1);
                ICONVIEW_AddBitmapItem(hItem, &bmwindtype_M, "");//添加图标项

                hItem = WM_GetDialogItem(pMsg->hWin, ID_ICONVIEW_2);
                ICONVIEW_SetIconAlign(hItem, ICONVIEW_IA_TOP);
                //ICONVIEW_SetTextColor(hItem, ICONVIEW_CI_UNSEL, GUI_BLUE);
                //ICONVIEW_SetTextColor(hItem, ICONVIEW_CI_SEL, GUI_GREEN);
                ICONVIEW_SetBkColor(hItem, ICONVIEW_CI_SEL, GUI_BLUE);
                ICONVIEW_SetFrame(hItem, GUI_COORD_X, 0);//设置图标到IconView边框的间距
                ICONVIEW_SetFrame(hItem, GUI_COORD_Y, 0);
                ICONVIEW_SetFont(hItem, GUI_FONT_8_1);
                ICONVIEW_AddBitmapItem(hItem, &bmWifi32_X, "");//添加图标项


在模拟器上的执行结果如图:


请问版主,这里初始化时的代码该怎么写呢,才能使图标的背景为透明。
现在作ICON的图片是.png格式且透明的,是用BmpCvtST工具取的.C文件。
回复 支持 反对

使用道具 举报

30

主题

158

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1525
金钱
1525
注册时间
2015-11-11
在线时间
163 小时
 楼主| 发表于 2018-6-5 09:14:35 | 显示全部楼层
xyzjacky 发表于 2018-6-4 15:16
请教楼主,我现在显示底色为透明的ICON图标,但是实际结果是,图标下面始终有底色怎么办呢?(我两个ICON图 ...

按照我的步骤来,应该没问题的,你把我代码下载下来看看
好好学习
回复 支持 反对

使用道具 举报

6

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
金钱
203
注册时间
2013-8-15
在线时间
44 小时
发表于 2018-6-5 09:39:01 | 显示全部楼层
wcyingdream 发表于 2018-6-5 09:14
按照我的步骤来,应该没问题的,你把我代码下载下来看看

你的代码打不开,压缩包里面的maintask.c文件是坏的。
回复 支持 反对

使用道具 举报

30

主题

158

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1525
金钱
1525
注册时间
2015-11-11
在线时间
163 小时
 楼主| 发表于 2018-6-6 09:05:57 | 显示全部楼层
xyzjacky 发表于 2018-6-5 09:39
你的代码打不开,压缩包里面的maintask.c文件是坏的。

不会啊,我试了是好的,你用好压解压看看
好好学习
回复 支持 反对

使用道具 举报

6

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
金钱
203
注册时间
2013-8-15
在线时间
44 小时
发表于 2018-6-7 15:56:43 | 显示全部楼层
wcyingdream 发表于 2018-6-6 09:05
不会啊,我试了是好的,你用好压解压看看

你的代码我打开了,但是你的用法和我的不一样,我是用的iconview方式
回复 支持 反对

使用道具 举报

0

主题

286

帖子

0

精华

高级会员

Rank: 4

积分
949
金钱
949
注册时间
2018-4-21
在线时间
264 小时
发表于 2018-9-2 20:26:12 | 显示全部楼层
谢谢楼主分享!刚好用到
回复 支持 反对

使用道具 举报

40

主题

259

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
459
金钱
459
注册时间
2016-5-19
在线时间
192 小时
发表于 2018-9-3 16:30:53 | 显示全部楼层
楼主,您好,我仿真了您的C文件,发现是黑屏的。。
TIM截图20180903162929.png
回复 支持 反对

使用道具 举报

3

主题

288

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2018-8-28
在线时间
130 小时
发表于 2018-10-7 09:50:33 | 显示全部楼层
mark 一下
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2013-7-16
在线时间
10 小时
发表于 2018-12-30 16:48:58 | 显示全部楼层
谢谢分享,太有用了。
回复 支持 反对

使用道具 举报

20

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
334
金钱
334
注册时间
2012-8-21
在线时间
27 小时
发表于 2019-1-7 11:59:56 | 显示全部楼层
感谢楼主,很实用,
回复 支持 反对

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2019-1-7 15:02:06 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

3

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2018-8-11
在线时间
28 小时
发表于 2019-3-25 15:19:59 | 显示全部楼层
感谢楼主分享,满满的干货!!!
回复 支持 反对

使用道具 举报

7

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2016-12-2
在线时间
35 小时
发表于 2019-5-30 08:54:20 | 显示全部楼层
非常有用,mark一下。
回复 支持 反对

使用道具 举报

17

主题

146

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1474
金钱
1474
注册时间
2018-11-15
在线时间
286 小时
发表于 2019-6-14 08:27:24 | 显示全部楼层
代码和工具,谢谢老妹
回复 支持 反对

使用道具 举报

14

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2011-10-16
在线时间
31 小时
发表于 2019-6-19 15:39:46 | 显示全部楼层
楼主,能否把头文件也上传一下,谢谢
回复 支持 反对

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
发表于 2019-9-3 08:50:35 | 显示全部楼层
很不错的一种方法。学习了学习了。
回复 支持 反对

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
发表于 2019-9-3 08:51:52 | 显示全部楼层
非常不错的方法,学习了学习了!
回复 支持 反对

使用道具 举报

8

主题

185

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-7-15
在线时间
47 小时
发表于 2019-9-5 15:53:57 | 显示全部楼层
非常棒,感谢楼主分享!!!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2019-11-29
在线时间
3 小时
发表于 2020-2-28 23:51:09 | 显示全部楼层

很不错,感谢楼主分享!!!
回复 支持 反对

使用道具 举报

1

主题

232

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3312
金钱
3312
注册时间
2015-4-19
在线时间
364 小时
发表于 2020-8-25 16:55:44 | 显示全部楼层
感谢分享,学习一下
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2015-10-23
在线时间
8 小时
发表于 2020-9-11 15:56:03 | 显示全部楼层
h418452224 发表于 2018-9-3 16:30
楼主,您好,我仿真了您的C文件,发现是黑屏的。。

增加一行
GUI_Init();    //初始化emWin/ucGUI
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2020-12-10
在线时间
19 小时
发表于 2021-1-18 13:48:31 | 显示全部楼层
666666
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 09:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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