zia khan Ответов: 1

Добавление строк на каждом холсте недействительность из списка строк в WPF


У меня есть код для рисования линии на холсте в wpf. Линия рисуется с помощью события мыши. Когда линия нарисована, она также добавляется в список линий. Я хочу перерисовывать эти линии каждый раз, когда холст становится недействительным, как мы это делаем в случае Paint панели winform.

private void Panel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    line = true;
    Point pointToWindow = Mouse.GetPosition(this);
    Point pointToScreen = PointToScreen(pointToWindow);
    DsP1 = new Point(pointToWindow.X, pointToWindow.Y - 150);
    if (e.ButtonState == MouseButtonState.Released)
    {
        line = false;
        ln = new System.Windows.Shapes.Line();
        ln.X1 = DsP1.X;
        ln.Y1 = DsP1.Y;
        ln.X2 = e.GetPosition(Panel).X;
        ln.Y2 = e.GetPosition(Panel).Y;
        ln.Stroke = pen;
        Panel.Children.Add(ln);
        Lines.Add(ln);
    }
}

private void Panel_MouseMove(object sender, MouseEventArgs e)
{

    if (line == true && e.LeftButton==MouseButtonState.Pressed)
    {
        Panel.Children.Remove(ln);
        ln = new System.Windows.Shapes.Line();
        ln.X1 = DsP1.X;
        ln.Y1 = DsP1.Y;
        ln.X2 = e.GetPosition(Panel).X;
        ln.Y2 = e.GetPosition(Panel).Y;
        ln.Stroke = pen;
        Panel.Children.Add(ln);
    }

}


Что я уже пробовал:

Я уже пробовал переопределить рендеринг с помощью..
protected override void OnRender(DrawingContext drawingContext)
        {
            base.OnRender(drawingContext);
            foreach(Line l in Lines){
Panel.Childeren.add(l);
}
           
        }


это не работает... без понятия

1 Ответов

Рейтинг:
2

Clifford Nelson

Я не уверен, что понимаю, почему ты так усложняешь свою жизнь. Если вы привязываетесь к свойству коллекции viewmodel и элементы в коллекции поддерживают INotifyPropertyChanged, то любые обновления будут отражены на холсте. Очевидно, что существуют определенные проблемы производительности, всегда связанные с привязкой в WPF