2011-10-04 98 views
0

我在wp7 silverlight應用程序中使用畫布。 我面臨兩個問題。在windows phone 7畫布中添加兒童超過兒童

  1. 於是就Canvas_MouseLeftButtonDown事件捕獲單點,然後在MouseMove事件我正在拍攝另一點,然後畫一條線,並加入這個孩子畫布。一切都很順利,只是在鼠標移動事件中,如果我將手指快速移動一點,結果是我得到的是直線而不是曲線,兩個點之間缺少一些點。 對於抓點,我使用e.GetPosition(其中e是MouseButtonEventArgs和MouseEventArgs類型)。是否有其他方式可以通過它像使用Touch類一樣抓取點。

  2. 如果我已經繪製了很多行(將許多孩子添加到畫布上),那麼在之前的行中添加更多具有不同顏色的行會很慢,並且點會再次丟失,從而導致直線。我認爲它的發生是因爲在已經繪製的區域捕獲了MouseMove事件中的點變得緩慢並且中間點丟失。

所以,請給我建議任何解決方案或方法來處理這個問題的情況。基本上,我必須實現的是當手指在畫布上移動時,將兒童添加到具有不同顏色和不同筆觸大小的兒童。

我附上我目前的邏輯,所以請告訴我我落後的地方。

在此先感謝。

代碼:

void myCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     currentPoint = e.GetPosition(myCanvas); 
     oldPoint = currentPoint; 
    } 

    void myCanvas_MouseMove(object sender, MouseEventArgs e) 
    { 
      currentPoint = e.GetPosition(myCanvas); 
      Line line = new Line() { X1 = currentPoint.X, Y1 = currentPoint.Y, X2 = oldPoint.X, Y2 = oldPoint.Y }; 
      line.Stroke = new SolidColorBrush(myColor); 
      line.StrokeThickness = 10; 
      line.StrokeStartLineCap = PenLineCap.Round; 
      line.StrokeEndLineCap = PenLineCap.Round; 
      this.myCanvas.Children.Add(line); 
      oldPoint = currentPoint; 
     } 
    } 

回答

0

我不是很久以前工作的東西非常相似,當我有問題,我發現這一點。

Derik Whittaker

我希望這有助於! :)

+0

首先感謝Derik爲你的解決方案。我在我的設備上進行了測試,捕獲點和繪圖的性能得到了極大的提升。我現在可以畫點。但仍然存在的問題是,當我將手指快速移動到畫布上時,小直線仍然存在。現在出現的其他問題是繪製字母,如V,W,M等(具有邊緣)尖銳的邊緣正在繪製,就像我們製作之字形線條時所繪製的尖銳邊緣...可以通過線條的某些屬性。 – pan4321

+0

不是我所知道的,但肯定會繼續對此進行研究。 MSDN或WP7 Dev將是一個很好的開始。花費更長時間才能得到答案,但他們會非常有幫助。 – Keeano

+0

也會轉到MSDN.com並在畫筆上查找「類參考」並查看它可以訪問的內容。 – Keeano