Страницы

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

четверг, 9 января 2020 г.

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

#c_sharp #wpf #wpf_canvas


Делаю рисовалку на 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
        });
    }
}


Но не получается плавной линии. 



Какие у меня есть ошибки в коде? Как сделать плавное рисование?
    


Ответы

Ответ 1



Вы каждый раз рисуете линию длинной один пиксель со смещением по координате X и Y. То есть, буквально, из точки с координатами {1:1} в точку {2:2}. Это очевидно из приведённого рисунка - все линии идут под углом 45 градусов. Вам же нужно рисовать линию, которая начинается из конца предыдущей нарисованной. Запоминайте, где была нарисована последняя точка и рисуйте линию до текущей.

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

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