Страницы

Поиск по вопросам

пятница, 15 февраля 2019 г.

Рисование на Canvas WPF

Делаю рисовалку на 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 градусов.
Вам же нужно рисовать линию, которая начинается из конца предыдущей нарисованной. Запоминайте, где была нарисована последняя точка и рисуйте линию до текущей.

Комментариев нет:

Отправить комментарий