Построение в реальном времени в c # - PullRequest
4 голосов
/ 10 февраля 2011

Я пытаюсь отобразить данные на КПК, которые собираются в режиме реального времени через последовательный порт bluetooth с использованием c # и windows mobile 5. У меня возникают проблемы с отображением данных таким образом, чтобы они выглядели гладкими.Я попытался нарисовать линию из массива точек, которая работала, но отображала только отдельные фрагменты данных.Я нашел похожее решение на этом форуме в отношении данных ЭКГ, которые также работали, но опять-таки они показали некоторое количество данных и затем очень заметно обновились.Я попытался нарисовать точки на растровом изображении, а затем нарисовать растровое изображение, чтобы сделать его более плавным, но опять же, это не совсем достаточно быстро.

То, что я хотел бы закончить, это то, что ведет себя как график истории использования процессора в диспетчере задач Windows.Точка данных начинается с правой стороны графика и плавно перемещается влево.Есть ли стандартный подход к такой проблеме?Я прошу прощения, если вопрос немного расплывчатый, но я не хочу целую вечность пробовать разные вещи, если это проблема с хорошо известным общим решением.

1 Ответ

1 голос
/ 10 февраля 2011

Это зависит от того, как вы хотите, чтобы это работало визуально.Использование ЦП в диспетчере задач прокручивает всю диаграмму справа налево, и это не совсем гладко.Он обновляется (для меня в любом случае) примерно раз в секунду, а когда он обновляется, тогда весь график «отталкивается» в сторону.

Я сделал что-то в CF еще в 1.0 день в качестве теста, и я выбралчтобы диаграмма оставалась статичной и чтобы линии данных непрерывно рисовались слева направо, а когда она достигла правого края, она снова начинала рисовать обратно слева, стирая самые старые данные диаграммы по мере их продвижения (как ЭКГ).

Для этого сценария ваше растровое изображение остается в основном неизменным, поэтому вам не следует перерисовывать все это.Я сделал это с помощью вырезанного резона, который был в основном «вертикальной полосой» или прямоугольником высоты диаграммы, но только, скажем, шириной 10 пикселей.Я перерисовал эту полосу с обновленными значениями осей, поэтому единственные биты, которые на самом деле перерисовываются, - это маленькая полоса.Это также имело дополнительное преимущество в виде видимого «стирания» самых старых данных после того, как я вернулась к началу диаграммы.

...