作者afz096 (我被淡水的路宠坏了)
看板Programming
标题[问题] GUI 的穿透
时间Thu Jan 8 17:00:56 2009
用穿透这字眼无法确切的形容
将问题详述如下
一个视窗上面有其他的物件,
而这些物件几乎将整个视窗占满。
而当我滑鼠在视窗上 click 或是拖曳时,
这些 event 会被视窗上面的物件撷取,
而我希望这些 event 可以直接传给视窗。
图示说明如下
┌─────────┐
│视窗 a │
│ ┌──────┐ │
│ │ 物件一 │ │
│ └──────┘ │
│ ┌──────┐ │
│ │ 物件二 b │ │
│ └──────┘ │
└─────────┘
当滑鼠在 a 点 press,在 b 点 release,
a 点 press 的 event 会被视窗撷取,
b 点 release 的 event 会被物件二撷取,
想知道有甚麽样的方式,可以让物件二所撷取的 event 可以传给视窗。
两个想法如下:
第一个是当视窗内的物件产生的时候,顺便将视窗的 reference 传进去,
所以物件接受到 event 时,可以藉由 reference 交给视窗解决。
可是这样的缺点是,当视窗内的物件越多,reference 会越多,记忆体使用效率并不好。
另一个想法是,在所有的物件最上层,建立一个完全透明的物件,
而所有的滑鼠的 event 都由最上层透明的物件接收,
在根据 event 触发的座标,交给视窗或是相对应的物件来处理。
不过这样要处理好 z 轴的顺序,以及物件的透明度,而这是我的问题所在。
不知是否还有其他的解法,还请各位指教。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.136.149.195
1F:推 NDark:物件二事件函式中再做一个事件,传给视窗事件 140.96.77.176 01/08 18:04
2F:推 yoco315:你是要 "Drag and Drop" ? google 一下 118.160.110.24 01/08 19:22
4F:→ afz096:感谢!140.136.149.195 01/09 14:22