#encoding: utf-8
import
wximport
osimport
noname
class
frame( noname.myframe1 ):
def__init__
(self,parent):
noname.myframe1.
__init__
(self,parent)
self.curbitmap =none
self.curpointerpos =none
defm_createbitmap_buttononbuttonclick ( self,event ):
event.skip()
defm_bitmap1onleftdown ( self,event ):
self.curpointerpos =event.getposition()
event.skip()
defm_bitmap1onmotion ( self,event ):
if event.dragging() and
event.leftisdown() :
pos = event.getposition() -self.curpointerpos
statusval = '
x = %d y = %d
self.m_statusbar1.setstatustext(statusval)
event.skip()
實現的功能是在panel上建立乙個staticbitmap,然後可以用滑鼠在panel上任意隨滑鼠拖動staticbitmap。
實際上可以拖動任意控制項。
思路:監聽staticbitmap(被拖動控制項)的wx.evt_motion,和wx.evt_left_down 事件。
當滑鼠左鍵在staticbitmap上按下是記錄此刻:
1,滑鼠的位置(event.getposition() 這是相對座標,而且是相對監聽控制項的(這裡監聽它的是staticbitmap))。
2,staticbitmap(被拖動控制項)的位置(staticbitmap的getposition() 返回的是控制項左上角相對父控制項的位置)。
滑鼠的位置是用來計算偏移的,staticbitmap的位置加上這個偏移就是被拖動的位置。
呼叫staticbitmap的move(point),將控制項移動到相對父控制項的。
碰到的一些問題:
1,並不是所有的event,呼叫skip() 後都傳遞給父控制項。下面鏈結有解答。
2,一開始是監聽panel的wx.evt_motion,但是滑鼠一放到staticbitmap上,panel就監聽不到這個事件了。上面鏈結提到了
wx.postevent(staticbitmap(被拖動控制項).getparent(),event),本來想把事件post給panel,這樣panel來計算滑鼠偏移,這樣更準確,不會有閃爍的情況。但是post成功了,但是panel裡面觸發了這個事件,但是event.getposition() 依然是相對staticbitmap(被拖動控制項)的,而不是相對panel(父控制項)的,雖然事件觸發了。
SL滑鼠拖動
實現滑鼠down up 和move 事件可以在布局面板中使用滑鼠拖動或移動巢狀在border控制項中的影象或物件。xaml canvas x name layoutroot background white border x name border1 canvas.top 100 canvas.le...
javascript 滑鼠拖動
因為滑鼠沒有拖動事件 按下滑鼠並移動 只有按下,抬起,移動。記得在之前的乙個 拖動層 的隨筆中,我實現拖動,是用的乙個布林變數,判斷是否可以拖動某元素。這兩天看了一些東西,發現不需要設這個布林變數 實現過程 按下滑鼠的時候,給文件物件 當然也可以是別的dom物件 的移動事件繫結乙個處理函式,同時也給...
JavaScript滑鼠拖動
下面先看乙個有bug的版本,就是滑鼠移動太快後方塊會跟不上滑鼠的移動,然後滑鼠就離開了方塊區域,而事件都是繫結在方塊 div 上的,所以當滑鼠離開方塊後方塊就停了下來,當滑鼠 無論是否鬆開滑鼠左鍵 回到方塊區域方塊又會跟著滑鼠移動。出現這種問題的原因是 系統監聽滑鼠移動的頻次小於滑鼠移動的頻次。解決...