AlexanderProkopenko
@AlexanderProkopenko
Мне 14 лет. Изучаю программирование, а именно C#.

Как рисовать в C# wpf?

Я пытаюсь рисовать на Canvas'e C# wpf, но когда я быстро двигаю мышью получается вот это:
61f21897e57f9682754845.png
Потом я попробовал вместо кругов линии и все тоже самое
61f218acdebe1929318974.png

Вот мой код:
public void DrawPen(Point startPoint, Point endPoint, Canvas canvas, Color color, bool isClear = false)
{
    SolidColorBrush brushColor = new SolidColorBrush(color);
    Ellipse newEllipse = new Ellipse()
    {
        Stroke = brushColor,
        Width = 5,
        Height = 5
    };

    newEllipse.SetValue(Canvas.LeftProperty, endPoint.X);
    newEllipse.SetValue(Canvas.TopProperty, endPoint.Y);

    canvas.Children.Add(newEllipse);
}


Эта функция срабатывает при зажатой ЛКМ и движении мыши на canvas
private void CanvasMouseMove(object sender, MouseEventArgs e)
{
    if (e.LeftButton == MouseButtonState.Pressed)
    {
        endPoint = e.GetPosition(Canvas);

        switch (currentShape)
        {
            case Shapes.Pen:
                d.DrawPen(startPoint, endPoint, Canvas, currentColor);
                break;
            case Shapes.Line:
                d.DrawLine(startPoint, endPoint, Canvas, currentColor);
                break;
            case Shapes.Rectangle:
                d.DrawRectangle(startPoint, endPoint, Canvas, currentColor);
                break;
            case Shapes.Ellipse:
                d.DrawEllipse(startPoint, endPoint, Canvas, currentColor);
                break;
        }
    }        
}


Как я могу рисовать быстро и нормально?
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
HemulGM
@HemulGM
Delphi Developer, сис. админ
Тебе нудно зать старую позицию курсора и при движении рисовать эту линию
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы