I have several points, and I try to draw Bezier curve using code below
PathFigure pf = new PathFigure(points.From, ps, false); //ps - list of Bezier segments
PathFigureCollection pfc = new PathFigureCollection();
pfc.Add(pf);
var pge = new PathGeometry();
pge.Figures = pfc;
Path p = new Path();
p.Data = pge;
p.Stroke = new SolidColorBrush(Color.FromRgb(244, 111, 011));
My Bezier segments look like this
- 1,2,3 points – first segment
- 3,4,5 points – second
- 5,6,7.. ..
But I got this strange curve (here is 3 big (Nodes) and 7 small ellipse (is my points)):

The line you’re getting is the union of three distinct Bezier curves – one for each group of three points. (One for each “Bezier segment”?)
If you want a single smooth curve, you need to pass your 9 (or more) points as a single collection of points (single “Bezier segment”?), not as groups of three points.
Edit: Apparently
BezierSegmentonly supports three points, so no wonder this doesn’t work. Even ‘PolyBezierSegment’ just gives a collection of Bezier segments rather than a single smooth Bezier…So since WPF doesn’t give you anything useful, I knocked something together using the maths here. It’s a numeric solution, but it seems to be pretty performant even with enough points to look nice and smooth:
Using this,
gives