2015-07-18 121 views
0

我嘗試根據鼠標移動在畫布上繪製橢圓。 我使用鼠標移動事件並獲取鼠標指向位置X和Y,並在畫布內的新位置找到elippse。所有這些工作都非常完美,我得到了非常平滑的橢圓運動。WPF鼠標平滑運動問題

但是,如果我改變了我得到的頭寸的價值(見下面的代碼)。向下移動鼠標時,我會遇到非常糟糕的問題。橢圓會跳躍到橢圓大小的大小。 只有當值大約爲橢圓大小時纔會出現。 我想這是由於畫布中的舊橢圓(種類:橢圓跳過它自己)。 這裏是我的代碼:

private void MainArea_MouseMove(object sender, MouseEventArgs e) 
    { 

     Point position = e.GetPosition(canvas); 

     //position.X -= 15 ; // this line couse the problem 

     Canvas.SetLeft(PlayerEllipse, position.X); 
     Canvas.SetTop(PlayerEllipse, position.Y); 
    } 

尋找解決的解決方案

回答

0

- 我發現我也需要修建一個MouseMove事件處理程序。對於橢圓本身。當我的鼠標位於橢圓上時,與橢圓相關的事件而不是容器MainArea的事件相關。見下文

myEllipse.MouseMove += new MouseEventHandler(myEllipse_MouseMove); 



private void myEllipse_MouseMove(object sender, MouseEventArgs e) 
    { 
     MainArea_MouseMove(sender, e); 
    }