Живой график
Я пытаюсь придумать хороший дизайн для построения графика в реальном времени в.Net. Каждые x миллисекунд добавляется сэмпл, а когда сигнал находится в конце страницы, он сбрасывается в начало и начинает перезаписывать существующий сигнал (как в мониторах сердечного ритма ЭКГ).
В прошлом я делал это очень просто: просто рисовал пиксель для каждого образца через фиксированный интервал. Несмотря на то, что это работало хорошо, у меня вскоре возникли проблемы, когда я попытался добавить любой фон, например: сетку. Когда образец / пиксель перекрывает сетку, становится сложно очистить его на втором проходе, поскольку вы не можете просто перезаписать его белым пикселем.
Возможно, для этого было бы проще использовать WPF вместо Winforms, так как я мог бы просто сделать волновую форму элементом, и фон должен автоматически сохраняться / перерисовываться при перемещении элемента.
Как бы вы решили это?
1 ответ
Вы можете поместить свою кривую в PathGeometry (или StreamGeometry) в свойстве Data элемента управления Path.
<Canvas>
<Path Stroke="Black" StrokeThickness="3">
<Path.Data>
<PathGeometry>
<PathFigure x:Name="figure" IsClosed="False">
<PathFigure.Segments>
<PolyLineSegment x:Name="polyline"/>
</PathFigure.Segments>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
</Canvas>
Обновите PathGeometry в коде позади:
figure.StartPoint = ...;
polyline.Points.RemoveAt(...);
polyline.Points.Add(...);