Maybe define two polylines and use clipping. Something like this:
<Canvas . . .>
<Polyline x:Name="Wave1" Canvas.Top="0" Canvas.Left="0" StrokeThickness="1" Stroke="Black">
<Polyline.Clip>
<GeometryGroup>
<RectangleGeometry Rect="0 0 200 2000"/>
<RectangleGeometry Rect="300 0 2000 2000"/>
</GeometryGroup>
</Polyline.Clip>
</Polyline>
<Polyline x:Name="Wave2" Canvas.Top="0" Canvas.Left="0" StrokeThickness="1" Stroke="Red">
<Polyline.Clip>
<RectangleGeometry Rect="200 0 300 2000"/>
</Polyline.Clip>
</Polyline>
</Canvas>
Then execute:
Wave1.Points = points;
Wave2.Points = points;
If you assign some names to these rectangles, then probably you can change the areas (Rect properties) programmatically. Maybe binding will work too.