График WPF в реальном времени .Net 4 - PullRequest
3 голосов
/ 25 октября 2010

Я работаю над диагностическим инструментом и получаю данные каждые 25 мс. Мне нужно, чтобы эти данные были нарисованы на моем графике с помощью lineSeries. Я использую диаграмму wpf с lineSeries, которую я связываю в xaml с ObservebleCollection.

Проблема в том, что мне нужно, чтобы коллекция содержала как минимум 1600 точек данных, прежде чем начинать удалять их спереди.

Я понимаю, что 25 мс - это короткий тайм, тогда речь идет о рисовании в wpf. У кого-нибудь есть решение моей проблемы?

С уважением

Ответы [ 4 ]

4 голосов
/ 29 марта 2012

Вы должны проверить SciChart, который может обрабатывать обновления данных в 1 мс. Он визуализируется как игровой цикл, поэтому рисует только тогда, когда добавляются новые данные и поток пользовательского интерфейса свободен. Дополнительную информацию можно получить по адресу www.scichart.com / wpf-chart-features , в которой представлены функции и сведения о производительности

enter image description here

Раскрытие информации: это мой собственный компонент, поэтому задавайте любые вопросы, если они у вас есть!

2 голосов
/ 17 июля 2011

У меня есть приложение .NET, которое отображает множество измерений с интервалом в 33 мс. Я выполнил несколько графических решений для решения этой задачи, но единственным реальным жизнеспособным вариантом, который я нашел, был Arction LightningChart (http://www.arction.com). Lightning Chart будет делать то, что вы хотите довольно легко, и я думаю, что вы можете получить базовую версию бесплатно. недостатком будет зависимость от DirectX и библиотеки SlimDX. Пробная версия, которую вы можете скачать с сайта, даст вам довольно хорошие примеры использования этого элемента управления в WPF и Windows Forms.

2 голосов
/ 25 октября 2010

Я бы посоветовал вам использовать нестандартную процедуру рисования с использованием WritebleBitmap вместо фигур и рисовать линии в фиксированной области по одному сегменту за раз без прокрутки.Когда вы достигнете 1600 пунктов с правой стороны вашего участка, начните все сначала.Возможно, какой-то визуальный индикатор (например, вертикальная линия или что-то еще) поможет восприятию.

Я не думаю, что есть какие-либо библиотеки графиков, предназначенные для обновления линии 1600 точек каждые 25 мс.

0 голосов
/ 03 июля 2015

Используйте Microsoft Chart для WinForms с помощью элемента управления WindowsFormsHost. MS-Chart может справиться с такими скоростями передачи данных. Он внутренне использует метод WritableBitmap, поэтому он быстрый и стабильный. Также не забудьте установить тип серии FastLine, чтобы избежать замедления.

Я создал статью «Подсказка» по проекту кода, которая пытается выделить этот тип использования большого объема данных в MS-Chart. Вы можете изменить интервал таймера до 1 мс. и убедитесь, что нет никаких проблем с отображением данных.

Артикул в http://www.codeproject.com/Tips/1006180/Using-Microsoft-Chart-in-WPF

...