WPF两点之间绘制丝滑的贝塞尔曲线

WPF两点之间绘制丝滑的贝塞尔曲线

在做这种节点连线的控件时,需要绘制流畅的曲线。

绘制贝塞尔曲线的代码如下:(geo数据给到Path的Data即可绘制)

   private void Refresh()
   {
       PathGeometry geo = new PathGeometry();
       PathFigure pathFigure = new PathFigure();
       pathFigure.StartPoint = StartPoint;
       PathSegmentCollection pac = new PathSegmentCollection();

       BezierSegment quadratic = new BezierSegment(CalculateControlPoint(StartPoint, EndPoint, true), CalculateControlPoint(StartPoint, EndPoint, false), EndPoint, true);
       pac.Add(quadratic);
       pathFigure.Segments = pac;
       geo.Figures.Add(pathFigure);
   }

   private Point CalculateControlPoint(Point startPoint, Point endPoint, bool isFirstControlPoint)
   {
       double distanceX = Math.Abs(endPoint.X - startPoint.X);
       double controlPointX = (startPoint.X + endPoint.X) / 2;
       double controlPointY = isFirstControlPoint ? startPoint.Y - distanceX / 12 : endPoint.Y + distanceX / 12;
       return new Point(controlPointX, controlPointY);
   }

你可能感兴趣的:(WPF开发心得,自定义控件,WPF技术,wpf)