硬汉嵌入式论坛

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

[emWin] 按钮实现问题

[复制链接]

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
发表于 2017-4-7 10:44:44 | 显示全部楼层 |阅读模式
QQ截图20170407104659.png

如图所示,像这种按钮是用的图片还是说是用的自定义画图实现的呀?
还是干脆只用了2D图形库就画出来了?
2D库肯定是能实现这种外观的,但不用BUTTON控件的话,触摸逻辑这些肯定会比较麻烦的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2017-4-7 10:48:13 | 显示全部楼层
贴图就好了。用按钮自定义回调函数。
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2017-4-7 10:56:54 | 显示全部楼层

回 eric2013 的帖子

eric2013:贴图就好了。用按钮自定义回调函数。 (2017-04-07 10:48) 
有例程么?从来没用过这种功能
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2017-4-7 11:03:25 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:有例程么?从来没用过这种功能 (2017-04-07 10:56) 
新版emWin教程,按键自定义回调函数章节:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=19834
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2017-4-7 11:16:25 | 显示全部楼层

回 eric2013 的帖子

eric2013:新版emWin教程,按键自定义回调函数章节:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=19834 (2017-04-07 11:03) 
好的,谢谢了,先看看。
好像那个pdf太大了,动不动就卡死
估计是我的电脑太烂了
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2017-4-7 11:18:47 | 显示全部楼层

回 eric2013 的帖子

eric2013:新版emWin教程,按键自定义回调函数章节:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=19834 (2017-04-07 11:03) 
另外,在网上找到一种这样实现按钮贴图的方式,看他说的好像是直接修改了ewmin的实现方式。
http://blog.csdn.net/neqee/article/details/51317925
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2017-4-7 13:06:46 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:另外,在网上找到一种这样实现按钮贴图的方式,看他说的好像是直接修改了ewmin的实现方式。
http://blog.csdn.net/neqee/article/details/51317925 (2017-04-07 11:18)
看我们新版emWin教程皮肤章节即可。修改皮肤回调函数也是可以的。
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2017-4-7 14:39:19 | 显示全部楼层

回 eric2013 的帖子

eric2013:新版emWin教程,按键自定义回调函数章节:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=19834 (2017-04-07 11:03) 
现在碰到另一个问题就是,按钮的文字显示也是在自定义的回调函数里面实现的。不能使用BUTTON_SetText()进行单独设置么?
在有多个按钮时,只是使用统一的外形,按钮名称还是不同的。
估计还得做点曲折的方式才能实现了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2017-4-7 15:03:12 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:现在碰到另一个问题就是,按钮的文字显示也是在自定义的回调函数里面实现的。不能使用BUTTON_SetText()进行单独设置么?
在有多个按钮时,只是使用统一的外形,按钮名称还是不同的。
估计还得做点曲折的方式才能实现了 (2017-04-07 14:39) 
通过函数BUTTON_GetText获取下,这个函数会获取到你的BUTTON_SetText(),然后GUI_DispString显示即可。
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2017-4-7 15:16:59 | 显示全部楼层

回 eric2013 的帖子

eric2013:通过函数BUTTON_GetText获取下,这个函数会获取到你的BUTTON_SetText(),然后GUI_DispString显示即可。 (2017-04-07 15:03) 
果然。。。[s:151]
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2017-4-8 12:37:39 | 显示全部楼层

回 eric2013 的帖子

eric2013:看我们新版emWin教程皮肤章节即可。修改皮肤回调函数也是可以的。
 (2017-04-07 13:06) 
这个例程里面还有一点不太理解。
就是在自定义的BUTTON绘制回调函数里面,获取BUTTON的位置坐标和外形大小的问题。
具体说就是WM_GetClientRect(&Rect);这个函数获取的这个Rect的值是哪里来的?
是从资源列表中中BUTTON的初始长度和宽度里面的值?
也就是说,在自定义绘制BUTTON外形时,是通过资源列表中设置的显示坐标和默认的BUTTON为长廊形的长度和宽度值?然后,再来修改BUTTON的外形?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2017-4-8 12:52:26 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:这个例程里面还有一点不太理解。
就是在自定义的BUTTON绘制回调函数里面,获取BUTTON的位置坐标和外形大小的问题。
具体说就是WM_GetClientRect(&Rect);这个函数获取的这个Rect的值是哪里来的?
是从资源列表中中BUTTON的初始长度和宽度里面的值?
....... (2017-04-08 12:37) 
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2017-4-8 17:01:03 | 显示全部楼层

回 eric2013 的帖子

eric2013: (2017-04-08 12:52)
不对哦,这个Rect记录的是BUTTON对自身的相对坐标,即
Rect.x0 = 0
Rect.y0 = 0
Rect.x1 = BUTTON长度
Rect.y1 = BUTTON宽度
回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
发表于 2017-4-8 20:38:32 | 显示全部楼层
窗口系统在控件内绘图时都是用相对坐标,也即是以控件客户区左上角为原点。
其实这个问题你可以去验证,例如你绘制一个矩形(0, 0), (100, 100),你看看它出现在什么地方就会立即明白,比在这里问更快解决问题。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2017-4-8 21:03:23 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:不对哦,这个Rect记录的是BUTTON对自身的相对坐标,即
Rect.x0 = 0
Rect.y0 = 0
Rect.x1 = BUTTON长度
....... (2017-04-08 17:01) 
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2017-4-9 07:42:25 | 显示全部楼层

回 novice 的帖子

novice:窗口系统在控件内绘图时都是用相对坐标,也即是以控件客户区左上角为原点。
其实这个问题你可以去验证,例如你绘制一个矩形(0, 0), (100, 100),你看看它出现在什么地方就会立即明白,比在这里问更快解决问题。 (2017-04-08 20:38) 
当然在回复时也是在反复的验证的
只是如果不系统总结一下的话,理解起来不是那么深刻,总是会感觉像是试出来的,下次就不一定灵了样
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
 楼主| 发表于 2017-4-9 07:43:10 | 显示全部楼层

回 eric2013 的帖子

eric2013: (2017-04-08 21:03) 
其实是会影响到下一步的调用2D库绘制外形的参数使用情况的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-15 01:40 , Processed in 0.335420 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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