2013-01-19 53 views
0

我試圖想出一個好的設計來繪製一個實時的.Net波形。每增加一個樣本x毫秒,當波形位於頁面末尾時,它將重置到開始並開始覆蓋現有波形(如ECG心率監視器中的波形)。實時波形圖

在過去,我以一種非常簡單的方式實現了這一點:只需以固定的時間間隔爲每個樣本繪製一個像素。雖然這工作正常,但當我嘗試添加任何類型的背景時,我很快陷入困境,例如:網格。當樣本/像素與網格重疊時,在第二遍中清除它變得複雜,因爲您不能用白色像素覆蓋它。

也許這會更容易使用WPF來代替Winforms,因爲我可以將波形設置爲一個元素,並且在移動元素時應該自動保留/重繪背景。

你會如何解決這個問題?

回答

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(...);