0

我试图想出一个好的设计来在.Net中绘制实时波形。每 x 毫秒添加一个样本,当波形位于页面末尾时,它会重置到开头并开始覆盖现有波形(如 ECG 心率监视器中)。

过去我以一种非常简单的方式做到这一点:只需以固定间隔为每个样本绘制一个像素。虽然这没问题,但当我尝试添加任何类型的背景时,我很快就遇到了麻烦,例如:网格。当样本/像素与网格重叠时,在第二次通过时清除它会变得很复杂,因为您不能只用白色像素覆盖它。

也许为此使用 WPF 而不是 Winforms 会更容易,因为我可以将波形作为一个元素,并且在我移动元素时应该自动保留/重绘背景。

你会如何解决这个问题?

4

1 回答 1

1

您可以将曲线放入Path控件的Data属性中的PathGeometry(或StreamGeometry)中。

<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(...);
于 2013-01-19T12:28:02.070 回答