我在wp7 silverlight應用程序中使用畫布。 我面臨兩個問題。在windows phone 7畫布中添加兒童超過兒童
於是就Canvas_MouseLeftButtonDown事件捕獲單點,然後在MouseMove事件我正在拍攝另一點,然後畫一條線,並加入這個孩子畫布。一切都很順利,只是在鼠標移動事件中,如果我將手指快速移動一點,結果是我得到的是直線而不是曲線,兩個點之間缺少一些點。 對於抓點,我使用e.GetPosition(其中e是MouseButtonEventArgs和MouseEventArgs類型)。是否有其他方式可以通過它像使用Touch類一樣抓取點。
如果我已經繪製了很多行(將許多孩子添加到畫布上),那麼在之前的行中添加更多具有不同顏色的行會很慢,並且點會再次丟失,從而導致直線。我認爲它的發生是因爲在已經繪製的區域捕獲了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;
}
}
首先感謝Derik爲你的解決方案。我在我的設備上進行了測試,捕獲點和繪圖的性能得到了極大的提升。我現在可以畫點。但仍然存在的問題是,當我將手指快速移動到畫布上時,小直線仍然存在。現在出現的其他問題是繪製字母,如V,W,M等(具有邊緣)尖銳的邊緣正在繪製,就像我們製作之字形線條時所繪製的尖銳邊緣...可以通過線條的某些屬性。 – pan4321
不是我所知道的,但肯定會繼續對此進行研究。 MSDN或WP7 Dev將是一個很好的開始。花費更長時間才能得到答案,但他們會非常有幫助。 – Keeano
也會轉到MSDN.com並在畫筆上查找「類參考」並查看它可以訪問的內容。 – Keeano