Делаю рисовалку на WPF, рисую Line на Canvas, но получается не совсем так, как ожидалось.
Вот часть, которая отвечает за рисование линии:
private void Canvas1_OnMouseMove(object sender, MouseEventArgs e)
{
if (e.MouseDevice.LeftButton == MouseButtonState.Pressed)
{
Canvas1.Children.Add(new Line
{
X1 = e.GetPosition(Canvas1).X,
Y1 = e.GetPosition(Canvas1).Y,
X2 = e.GetPosition(Canvas1).X + 1,
Y2 = e.GetPosition(Canvas1).Y + 1,
StrokeStartLineCap = PenLineCap.Round,
StrokeEndLineCap = PenLineCap.Round,
StrokeThickness = 1,
Stroke = Brushes.Black
});
}
}
Но не получается плавной линии.
Какие у меня есть ошибки в коде? Как сделать плавное рисование?
Ответ
Вы каждый раз рисуете линию длинной один пиксель со смещением по координате X и Y.
То есть, буквально, из точки с координатами {1:1} в точку {2:2}. Это очевидно из приведённого рисунка - все линии идут под углом 45 градусов.
Вам же нужно рисовать линию, которая начинается из конца предыдущей нарисованной. Запоминайте, где была нарисована последняя точка и рисуйте линию до текущей.
Комментариев нет:
Отправить комментарий