鼠標拖動

程序中捕獲鼠標事件,用於實現屏幕控件的拖動功能。一開始的時候我只能想到獲取鼠標按下時的座標值a(x,y)和鼠標擡起時的座標值b(m,n),將兩個座標值之間的距離加到基準座標G(base_x,base_y)上,即
base_x += m-x
base_y += n-y;
得到G’(m-x+base_x,n-y+base_y),實現區域的拖動,但是在這種情況下鼠標在移動的過程中不能實時的改變區域的位置,而是直到最終鼠標擡起時,瞬間移動到擡起時的位置。後來經多方參考:以鼠標按下時的座標A(x,y),動態的獲取鼠標移動時的座標B(m,n),接下來的一步尤爲重要,如果此時仍舊按照以上辦法直接取B-A的值加到基準座標G上,出現的結果是意想不到的,由於B是在隨時變動的,鼠標移動的過程中相當於無限的向基準座標上加上之前所有的差值。爲了實時的取得鼠標所在點與按下時座標距離,最簡單的是實時的更新A的座標,將B賦值給A,當鼠標移動到下一個座標B’時,距離差就變爲B’-B
即:
base_x +=m-x
base_y +=n-y
x=m
y=n
如此遞推便可實現控件的實時移動。這有點像弦截法求方程根
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章