none
Замедленное рисование Полилинии RRS feed

  • Вопрос

  • WPF C#

    Добрый день.

    Подскажите пожалуйста можно ли увидеть процесс рисования линии. Чтобы линия рисовалась из точки А в точку Б в течении например 1 сек.

    Английский плоха знаю, но кое что нашёл здесь

    Переделал под себя так

            List<int> _lstX = new List<int>() { 100, 500, 500, 100, 100};
            List<int> _lstY = new List<int>() { 300, 300, 100, 100, 300};
    
    
            private void UserControl_Loaded(object sender, RoutedEventArgs e)
            {
    
                   Point p = new Point(_lstX[0], _lstY[0]);
                Poly.Points.Add(p);
    
                _animationWorker = new BackgroundWorker
                {
                    WorkerReportsProgress = true,
                    WorkerSupportsCancellation = true
                };
                _animationWorker.ProgressChanged += AnimationWorkerOnProgressChanged;
                _animationWorker.DoWork += AnimationWorkerOnDoWork;
                _animationWorker.RunWorkerAsync(p);
    
            }
      private void AnimationWorkerOnDoWork(object sender, DoWorkEventArgs doWorkEventArgs)
            {
                var p = (Point)doWorkEventArgs.Argument;
    
                //var pc = new PointCollection();
                for (var i = 0; i <= _lstX.Count; i++)
                {
                    var pt = new Point();
                    pt.X = _lstX[i];
                    pt.Y = _lstY[i];
                    
                    Point pnt = new Point();
                    pnt.X = _lstX[i+1] ;
                    pnt.Y = _lstY[i+1] ;
                    _animationWorker.ReportProgress(0, pnt);
                    Thread.Sleep(1000);
                    if (_animationWorker.CancellationPending) break;
                }
            }

            private void AnimationWorkerOnProgressChanged(object sender, ProgressChangedEventArgs progressChangedEventArgs)
            {
                var p = (Point)progressChangedEventArgs.UserState;
                Poly.Points.Add(p);
            }


    Здесь немного не то, в примере задержка перед отрисовыванием следующего сегмента, а хочется увидеть само рисование сегмента в течение определённого промежутка времени.

    Можно например всю полилинию все сегменты за определённое время, но хотя бы понять как это делается с простой линией.

    Желательно не точками отрисовывать, а именно линией. Работать мне потребуется именно с полилиниями.

    Спасибо за помощь

    30 июня 2016 г. 10:13

Ответы