Я использую canvas в приложении wp7 silverlight.Я сталкиваюсь с двумя проблемами.
Итак, событие Canvas_MouseLeftButtonDown захватывает одну точку, а затем в событии MouseMove я собираю другую точку, а затем рисую линию и добавляю этих детей в Canvas.Все идет хорошо, за исключением того, что в случае перемещения мыши некоторые точки пропускаются между двумя, если я немного двигаю пальцем, и в результате я получаю прямые линии вместо кривых.Для захвата точки я использую 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;
}
}