事件传递问题(高分悬赏)

lastsucc 2013-02-04 05:14:31
我有一个WinForm窗口,窗口上面要铺一张图片,
这张图片的大部分是透明的,我希望用户可以点击或者拖动WinForm窗口上的控件进行操作。谁能够给出代码
...全文
255 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
夜轻风 2013-02-06
  • 打赏
  • 举报
回复
可以考虑试着把控件设置成透明或者半透明的。另外是不是也可以考虑把图片做成类似网游中地图的形式呢,需要时显示不需要时收起。
crystaldn 2013-02-06
  • 打赏
  • 举报
回复
根据坐标找控件,再提交事件 private int offsetX = 0; private int offsetY = 0; private double xRatio = 1; private double yRatio = 1; private void pbLayout_MouseMove(object sender, MouseEventArgs e) { if (pbLayout.Image == null) return; if (e.X >= ((Bitmap)pbLayout.Image).Width) return; if (e.Y >= ((Bitmap)pbLayout.Image).Height) return; if (xRatio == 0 || yRatio == 0) return; //画面可能和地图大小及位置不一致,如星际争霸的小地图与战斗场景 double X, Y; X = e.X - offsetX; Y = e.Y - offsetY; X = X / xRatio; Y = Y / yRatio; //根据坐标找到你的控件。 //... }
viki117 2013-02-05
  • 打赏
  • 举报
回复
不懂.......
  • 打赏
  • 举报
回复
看我的博客,有通用的实现,大型企业级控件库的应用。 ======================================================= .NET快速开发整合框架(RDIFramework.NET),基于.NET的快速开发、整合框架,给用户和开发者最佳的.Net框架部署方案。 平台博客:[CNBLOGS]http://www.cnblogs.com/huyong [CSDN]http://blog.csdn.net/chinahuyong 交流QQ:406590790 (请注明:CSDN) 平台微博:http://t.qq.com/yonghu86 邮件交流:406590790@qq.com
cheng2005 2013-02-05
  • 打赏
  • 举报
回复
傻瓜做设计,聪明人怎么都没法实现。 但是反过来 聪明人做设计,傻瓜也是可以实现的。 这就是为什么做程序设计的人需要比普通开发人员的素质更高。
夜轻风 2013-02-05
  • 打赏
  • 举报
回复
那为什么不把图片设置成背景呢
  • 打赏
  • 举报
回复
为什么不靠谱?你你拖动的时候就可以同时移动控件啊。你只是关联图片上的位置到后面窗体的位置。如果有控件你按着鼠标拖动。那时候触发拖动事件不就可以了? 为什么会觉得不靠谱。
likedefly 2013-02-05
  • 打赏
  • 举报
回复
都在一个界面绘制,控件用绘制代替
  • 打赏
  • 举报
回复
引用 13 楼 lastsucc 的回复:
引用 8 楼 lye2000000_super 的回复:为什么不靠谱?你你拖动的时候就可以同时移动控件啊。你只是关联图片上的位置到后面窗体的位置。如果有控件你按着鼠标拖动。那时候触发拖动事件不就可以了? 为什么会觉得不靠谱。 从实现的角度来讲,这样做事可以实现的,但是从现实资源的角度来讲,这样的复杂度是非常高的,需要考虑,鼠标移入控件是控件的变化,鼠标拖动是控件的……
你只要挡住了。那么你怎么可能会触发事件呢?所以你只要在那个位置的动作就触发在那个位置的事件。没你想的那么麻烦。 事件处理就是你原来的控件的事件处理。只是增加了。对控件事件的invoke而已。
lastsucc 2013-02-05
  • 打赏
  • 举报
回复
引用 16 楼 likedefly 的回复:
你的控件以及前端背景可以使用绘图方式来做,所谓的按钮事件执行只要是在某个位置,对应的事件响应即可
谢谢,这种方式我昨天做了实验,但是最终放弃了,原因是,1、绘制时需要有一个载体,就是图片绘制到那一层上,一般是控件(可能是我的实现方式有问题),绘制上去之后同样载体会遮挡下层的控件,造成事件不能接收。2、你说的对控件做定位的问题,这需要对这个窗口的控件进行热点描述,我的程序是一个电子书,书页上的控件是不固定的,根据内容会有变化,因此在用户用鼠标操作时,程序根据热点进行相应的事件处理是非常复杂的一个操作,因为不光是点击操作,还有拖动,以及鼠标移动时控件的UI变化,另外有些点击操作会在界面上生成新的控件。综上所述你的这个方案没有完全解决我的问题,谢谢
likedefly 2013-02-05
  • 打赏
  • 举报
回复
你的控件以及前端背景可以使用绘图方式来做,所谓的按钮事件执行只要是在某个位置,对应的事件响应即可
lastsucc 2013-02-05
  • 打赏
  • 举报
回复
引用 10 楼 wddw1986 的回复:
傻瓜做设计,聪明人怎么都没法实现。 但是反过来 聪明人做设计,傻瓜也是可以实现的。 这就是为什么做程序设计的人需要比普通开发人员的素质更高。
来跟着我说:“我不知道该怎么做”
lastsucc 2013-02-05
  • 打赏
  • 举报
回复
引用 9 楼 UR_Not_Alone 的回复:
那为什么不把图片设置成背景呢
图片设成背景,控件就会在背景之上,会盖住图片内容,图片的内容是用户的批注,不能被盖住,不然就失去意义了
lastsucc 2013-02-05
  • 打赏
  • 举报
回复
引用 8 楼 lye2000000_super 的回复:
为什么不靠谱?你你拖动的时候就可以同时移动控件啊。你只是关联图片上的位置到后面窗体的位置。如果有控件你按着鼠标拖动。那时候触发拖动事件不就可以了? 为什么会觉得不靠谱。
从实现的角度来讲,这样做事可以实现的,但是从现实资源的角度来讲,这样的复杂度是非常高的,需要考虑,鼠标移入控件是控件的变化,鼠标拖动是控件的变化,鼠标点击是控件的变化,还要考虑控件时间出发后弹出的新控件的情况,复杂度是非常高的,投入的人力太大,实现的成本太高,所以我说这种方式不靠谱,对我来说
lastsucc 2013-02-04
  • 打赏
  • 举报
回复
引用 6 楼 lye2000000_super 的回复:
你这不可能吧。除非你根据区域去找相应位置的控件。然后再做操作。
窗口上的操作有点击,还有拖动,如果是只有点击的话,截获一下然后找对应的控件执行事件就行了,但是有拖动,复杂度就比较高了,所以这个方法不太靠谱
  • 打赏
  • 举报
回复
你这不可能吧。除非你根据区域去找相应位置的控件。然后再做操作。
lastsucc 2013-02-04
  • 打赏
  • 举报
回复
可能是我没说清楚,图片盖住了整个界面,不是背景,是浮在窗口上面的,我希望图片框能够不接受任何事件,所有的用户操作都能够漏到下面窗口上去
  • 打赏
  • 举报
回复
控件都可以操作。还需要什么代码?
嘴哥臭鼬 2013-02-04
  • 打赏
  • 举报
回复
都有相应的事件, 想干嘛就干嘛啊,
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
一个类似红警地图编辑器源代码(C#) 这上面有拖拽、透明、动态添加、删除控件等源码
加载更多回复(1)

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧