社区
图形处理/算法
帖子详情
按钮被遮挡问题
xuxian02092213
2010-01-22 05:11:48
老问题,仍未解决。
问题是当我的按钮被另外的应用程序窗口遮挡住的时候,能不能获得按钮被遮挡住部分的大小,或者说获得未被遮挡住部分的大小??? 还请高手们帮帮忙啊。。。。。
...全文
659
13
打赏
收藏
按钮被遮挡问题
老问题,仍未解决。 问题是当我的按钮被另外的应用程序窗口遮挡住的时候,能不能获得按钮被遮挡住部分的大小,或者说获得未被遮挡住部分的大小??? 还请高手们帮帮忙啊。。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xuxian02092213
2010-02-02
打赏
举报
回复
我用了一个HOOK,勉勉强强实现了透明效果。我希望的透明是不需要按钮以外的代码来辅助实现,如楼上的有说在对话框画背景的时候将DC传给按钮,那样实现确实可以,但那就是用的一些辅助实现部分,我是不希望要这部分,所以使用了一个HOOK,但效果并不好,需要强制刷新。。。
fandh
2010-01-28
打赏
举报
回复
个人感觉楼主可以换一个思路,换一种方法!
楼主是否可以用一个缓存来记录你每次画的?而不用考虑界面上面其它程序的干扰?
这样,你下次画的时候,直接读取上次的缓存,然后加上画的,贴出来,当然,结果一样存缓存,准备给下一次用!
不知道我理解的是否正确!楼主那段文字我看了半天,呵呵
cnzdgs
2010-01-27
打赏
举报
回复
说说具体哪些部分要透明。例如按钮使用不规则形状,只要SetWindowRgn即可。
xuxian02092213
2010-01-27
打赏
举报
回复
9#的做法我也尝试过,而且我在上面也说了,可以实现,但是这需要Dialog将MemDC传送给Button,OK,是吧,但是一个控件(我的想法是做一个.ocx控件,现在尚未实现,仅仅是在重写阶段)拖到dialog上,然后就直接实现透明了,而不dialog传个什么东西给Button然后再实现透明。。。。
当然了,不管怎么样,都很谢谢各位支持,呵呵。。。。。
yangcuncunzhang
2010-01-26
打赏
举报
回复
[Quote=引用 6 楼 xuxian02092213 的回复:]
我要实现一个透明按钮,那么按钮上的颜色是按钮背后的颜色。
有这样个问题,打开任务管理器(默认任务管理器在窗口最上面),我的按钮写好了,运行,任务管理器遮挡住了按钮,移开任务管理器的时候,按钮上色彩,不是按钮背后的颜色,而是任务管理器上的那些个数字之类的东西,导致的原因是:透明按钮点击的时候,整个按钮要向右下offset(1,1),以达到一个动态的效果,所以按钮可以再第一次绘制的时候(按钮上的字尚未写到按钮上,以及图标之类的东西尚未画到按钮上)可以记录下背景色,然后存储起来,以后再重绘时,将原先第一次获取的没有任何干扰颜色的图片,贴到按钮上已实现重绘。但是如果任务管理器遮挡程序的时候,第一次绘制按钮,得到背景色,会出现问题,也就是程序背景没有画,如果按钮要取背景色,CDC会将本来要画背景地方的颜色给你(刚好就是任务管理器的那些东西),所以导致这个问题。如果每次重画时都去获取背景色,那么问题是上次绘制在按钮上的字体、图标等会影响这次绘制内容。
所以我的想法是:按钮判断整个应用程序当前要绘制的区域是否包含按钮,如果包含按钮,,则去背景色,以后不再取色,将第一次画背景的颜色保留起来。这也带来一个问题。
问题是:如果任务管理器只遮挡按钮的部分呢?那就只能绘制部分按钮,故要取到按钮要绘制的区域,且还必须先前没有绘制过的,如果绘制过,则通过交集获取需要绘制的部分。。。想法感觉是这样,但是刚刚又想到一个问题,不过现在的这个问题还没有解决,不知道这个思路是否有问题,还请高人们看看,给个更好的思路啊。。。。。
[/Quote]
呵呵,楼主,你想复杂了!
我做了很多透明控件了,包括Dialog,Button, CStatic, ListBox, Edit等等。如果你在程序中需要更新控件的地方才去保存控件背景的话,这样的问题100%会出来打扰你,因为Windows是多任务的,可以随时将其他窗口切换上来,从而遮住你的一部分控件。
我的解决办法:在建立Dialog时,建立一个MemDC,将背景画在里面。需要更新某个控件所在位置的背景是,就将控件所在位置的背景MemDC中的内容重画在屏幕上!这样就能解决你的问题了。
看我的测试程序界面:
cnzdgs
2010-01-25
打赏
举报
回复
你的思路太复杂了,建议你按照我在上一个帖子中提出的方法来做,如果你认为方法不适合或者有其它疑问,可继续讨论。最好具体描述一下按钮的哪些部分要透明。
不想用了这个号
2010-01-25
打赏
举报
回复
GDI+
xuxian02092213
2010-01-25
打赏
举报
回复
我要实现一个透明按钮,那么按钮上的颜色是按钮背后的颜色。
有这样个问题,打开任务管理器(默认任务管理器在窗口最上面),我的按钮写好了,运行,任务管理器遮挡住了按钮,移开任务管理器的时候,按钮上色彩,不是按钮背后的颜色,而是任务管理器上的那些个数字之类的东西,导致的原因是:透明按钮点击的时候,整个按钮要向右下offset(1,1),以达到一个动态的效果,所以按钮可以再第一次绘制的时候(按钮上的字尚未写到按钮上,以及图标之类的东西尚未画到按钮上)可以记录下背景色,然后存储起来,以后再重绘时,将原先第一次获取的没有任何干扰颜色的图片,贴到按钮上已实现重绘。但是如果任务管理器遮挡程序的时候,第一次绘制按钮,得到背景色,会出现问题,也就是程序背景没有画,如果按钮要取背景色,CDC会将本来要画背景地方的颜色给你(刚好就是任务管理器的那些东西),所以导致这个问题。如果每次重画时都去获取背景色,那么问题是上次绘制在按钮上的字体、图标等会影响这次绘制内容。
所以我的想法是:按钮判断整个应用程序当前要绘制的区域是否包含按钮,如果包含按钮,,则去背景色,以后不再取色,将第一次画背景的颜色保留起来。这也带来一个问题。
问题是:如果任务管理器只遮挡按钮的部分呢?那就只能绘制部分按钮,故要取到按钮要绘制的区域,且还必须先前没有绘制过的,如果绘制过,则通过交集获取需要绘制的部分。。。想法感觉是这样,但是刚刚又想到一个问题,不过现在的这个问题还没有解决,不知道这个思路是否有问题,还请高人们看看,给个更好的思路啊。。。。。
lllyyy2403
2010-01-22
打赏
举报
回复
好像没有直接得到结果的API函数。但是既然OS能感知到哪些部分被遮盖,应该有办法得到遮盖部分才对。
gamedragon
2010-01-22
打赏
举报
回复
同3楼问,你先说要干什么,然后再看你的想法是否合理
cnzdgs
2010-01-22
打赏
举报
回复
为什么要“获得按钮被遮挡住部分的大小”?你具体要实现什么样的效果?
wangk
2010-01-22
打赏
举报
回复
按Z-Order顺序取窗口,然后按Z-Order顺序计算被遮盖的区域。
参考信息:
MSDN Windows Z-Order
marrco2005
2010-01-22
打赏
举报
回复
获取需要刷新的矩形区域
CDC::GetClipBox()
解决键盘
遮挡
输入框
主要功能包括: 自适应键盘出现后View的高度调整,防止
遮挡
输入框 点击背景区域关闭键盘 响应键盘上Return
按钮
事件(实现在上下UITextFiled间切换光标)
uniwebview
按钮
被无形
遮挡
问题
记录一下使用uniWebView遇到的坑。 1.uniWebView只适用于原生平台(ios和android) 2.uniWebView应该是采用了反射去调用android原生,从而android生成一个activity,这个层级比unity所有界面的层级都要高,所有不要试图去改unity的层级来压过uniWebView。只能留出一块地方用于放
按钮
。 3.即使用了第二种方法,留出一块空白 ,显示也正常,但是仍然不能点击
按钮
。这个
问题
困扰了我很久。最后发现其实很简单,就是unity和你下载的uniWeb
【Swing】JPanel重写paint()后
按钮
被
遮挡
,点击
按钮
键盘监听失效
效果图 内容说明 上图是我们小组做的泡泡堂,在接近项目结尾时,我接手一个小任务,就是在游戏进行界面底部增加截图中的3个
按钮
,并实现部分功能(有些
按钮
的功能组员已经实现了,我只需要调用他们的方法就可以了)。下面,我来将遇到的
问题
抽离出来,记录到博客。我相信应该也有同学会遇到这些
问题
。 1、如何布局能更好的将
按钮
组放在面板的底部居中位置?并且看起来像悬浮在地图之上。 2、由于面板中复写了paint()方法,导致
按钮
组被
遮挡
。但是当鼠标移上去,
按钮
组又可以显现出来。 3、点击底部任意一个
按钮
后,键
Qt
按钮
被
遮挡
,点击响应
Qt的
按钮
有时候不能满足我们的需求, 例如我们想在
按钮
的特殊几个部分显示不同的文字。
按钮
不支持这么复杂的操作,重载一种
按钮
,费时费力。 简单的做法:在
按钮
上覆盖一层QLabel, 1:设置背景透明:background-color: rgba(255, 255, 255, 0); 2:设置QLabel不响应点击事件: m_mUI.label_afoamt->setAttribute(Q
Unity 5.6 UGUI
按钮
被
遮挡
1.添加Button 2.在总分支的上的Canvas上挂上脚本 3.不需要boxcollider,调整渲染层次,别被
遮挡
了 4.添加点击事件 m_Btn.onClick.AddListener(delegate () {OnBtn_Click(); }); 转载于:https://www.cnblogs.com/zqkmp/p/7644818.html...
图形处理/算法
19,469
社区成员
50,697
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章