硬汉嵌入式论坛

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

[emWin] BUTTON按钮做开关按钮

[复制链接]

45

主题

45

回帖

45

积分

初级会员

积分
45
发表于 2017-8-16 18:28:17 | 显示全部楼层 |阅读模式
怎样把一个按钮做开关按钮,就是同一个按钮按一次是开再按一次是关??
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2017-8-17 01:39:22 | 显示全部楼层
可以参考这个综合Demo中音乐播放器的这个按钮:http://www.armbbs.cn/forum.php?mod=viewthread&tid=17330
用的按钮自定义回调函数实现的,这个自定义回调函数,在新版emWin教程的第47章也专门进行了讲解:http://www.armbbs.cn/forum.php?mod=viewthread&tid=35400

1.png
回复

使用道具 举报

11

主题

104

回帖

137

积分

初级会员

积分
137
发表于 2017-8-17 08:43:06 | 显示全部楼层
还可以用标志位取反来实现。
回复

使用道具 举报

9

主题

113

回帖

145

积分

初级会员

积分
145
发表于 2017-8-17 09:28:40 | 显示全部楼层
用两个Button不就好嘛,按一下隐藏一个显示一个,消息分别处理就好了
回复

使用道具 举报

45

主题

45

回帖

45

积分

初级会员

积分
45
 楼主| 发表于 2017-8-17 12:29:27 | 显示全部楼层

回 笔记本的自嘲 的帖子

笔记本的自嘲:还可以用标志位取反来实现。 (2017-08-17 08:43) 
能详细指点吗?
回复

使用道具 举报

11

主题

104

回帖

137

积分

初级会员

积分
137
发表于 2017-8-17 13:30:05 | 显示全部楼层
主要就是要定义一个全局变量来表示按钮的状态。
我这边之前做过一个实验,但是我是切换要显示的背景图片,你的话是改变按钮的图片原理应该是一样的,部分代码我贴在下面吧。
  1. case WM_NOTIFY_PARENT:
  2.             Id    = WM_GetId(pMsg->hWinSrc);
  3.             NCode = pMsg->Data.v;
  4.             switch(Id)
  5.             {
  6.             case ID_BUTTON_0: // Notifications sent by 'Button'
  7.                 switch(NCode)
  8.                 {
  9.                 case WM_NOTIFICATION_CLICKED:
  10.                     break;
  11.                 case WM_NOTIFICATION_RELEASED:
  12.                     ucBackColor++;
  13.                     if(ucBackColor == 2)
  14.                         ucBackColor=0;
  15.                     result = f_mount(&fs[0],"0:",1);
  16.                     switch(ucBackColor)
  17.                     {
  18.                         case 0:
  19.                             hMemJPEG = _ShowJPEG("0:/1.jpg", 0, 0);
  20.                             break;
  21.                         case 1:
  22.                             hMemJPEG = _ShowJPEG("0:/musicplayer.jpg", 0, 0);
  23.                             break;
  24.                     }
  25.                     WM_InvalidateWindow(pMsg->hWin);
  26.                     break;
  27.                 }
  28.             break;
  29.             }
  30.             break;
  31.         case WM_PAINT:
  32.             GUI_MEMDEV_WriteAt(hMemJPEG, 0, 0);
  33.             break;
复制代码
大概就是这样,我记得button有一个状态是“未按下”时候的。你在那个状态里面进行switch-case的判断就行,主要就是在那里面切换显示,可以用别的方法。
可能还有其他方法可以切换按钮的背景图片,不过我暂时只想到这个。
回复

使用道具 举报

5

主题

582

回帖

597

积分

版主

Rank: 7Rank: 7Rank: 7

积分
597
发表于 2019-5-3 21:51:52 | 显示全部楼层
eric2013 发表于 2017-8-17 01:39
可以参考这个综合Demo中音乐播放器的这个按钮:http://www.armbbs.cn/forum.php?mod=viewthread&tid=173 ...

有没有可以显示阴影效果的,像checkbox那样的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-5-5 02:09:50 | 显示全部楼层
myxiaonia 发表于 2019-5-3 21:51
有没有可以显示阴影效果的,像checkbox那样的

之前论坛讨论过这个问题,就是显示一个倒影效果吧。找不到那个帖子,里面还有坛友提供的代码。
回复

使用道具 举报

3

主题

28

回帖

37

积分

新手上路

积分
37
发表于 2019-5-5 08:36:01 | 显示全部楼层
可以用CHECKBOX组件重绘
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
发表于 2019-5-5 10:11:06 | 显示全部楼层
button有很多函数,可以主动设定状态,比如按下的,弹起的,还有每个状态的字体颜色,按钮颜色。 你可以在按键的消息中,主动设定按键的状态,可以达到你需要的效果。
回复

使用道具 举报

5

主题

582

回帖

597

积分

版主

Rank: 7Rank: 7Rank: 7

积分
597
发表于 2019-5-5 11:05:59 | 显示全部楼层
eric2013 发表于 2019-5-5 02:09
之前论坛讨论过这个问题,就是显示一个倒影效果吧。找不到那个帖子,里面还有坛友提供的代码。

工控屏上很多虚拟开关按钮的样式,最简单一种就是直接就是阴影做的
例如这样,我关心的是emwin下有没有直接拿来用的

按下和抬起按钮

按下和抬起按钮
回复

使用道具 举报

5

主题

582

回帖

597

积分

版主

Rank: 7Rank: 7Rank: 7

积分
597
发表于 2019-5-5 11:09:44 | 显示全部楼层
还有光照渲染效果,例如上面的按钮效果,其实就是非常简单的利用了光照和渲染体现出层次

如果我要给一个带图标的按钮设置光照渲染,如果只是纯粹的颜色渐变,可以用颜色梯度变换,但是带个图标在上面,图标是不是也可以做出梯度变换的效果呢
回复

使用道具 举报

5

主题

582

回帖

597

积分

版主

Rank: 7Rank: 7Rank: 7

积分
597
发表于 2019-5-5 11:40:34 | 显示全部楼层
不知道这个光照阴影是gui的功劳,还是ps代劳的结果,最简单的办法当然是ps做好拿来贴图
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-5-5 14:57:37 | 显示全部楼层
myxiaonia 发表于 2019-5-5 11:05
工控屏上很多虚拟开关按钮的样式,最简单一种就是直接就是阴影做的
例如这样,我关心的是emwin下有没有 ...

这种的界面简单,emWin的控件是可以设置效果的,你禁止掉皮肤色后,设置就好。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-18 00:00 , Processed in 0.314559 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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