public static void OnChartPointsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
WindChartControl charControl = d as WindChartControl;
GeometryGroup myGeometryGroup = new GeometryGroup();
var values = e.NewValue as List<IChartPoint>;
double radius = 0;
double lineRadius = charControl.DrawCanvas.ActualWidth / 2;
double radiusStep = lineRadius / values.Count;
// The center
double lastX = (double)(charControl.DrawCanvas.ActualWidth / 2.0);
double lastY = (double)(charControl.DrawCanvas.ActualHeight / 2.0);
foreach (var value in values)
{
radius += radiusStep;
double pointOffsetX = (charControl.DrawCanvas.ActualWidth - 2.0 * radius) / 2.0;
double pointOffsetY = (charControl.DrawCanvas.ActualHeight - 2.0 * radius) / 2.0;
double circleX = Math.Cos(GetAngleInRadian(value)) * radius;
double circleY = Math.Sin(GetAngleInRadian(value)) * radius;
float x = (float)(pointOffsetX + radius - circleX);
float y = (float)(pointOffsetY + radius - circleY);
myGeometryGroup.Children.Add(new LineGeometry() { StartPoint = new Point(lastX, lastY), EndPoint = new Point(x, y) });
lastX = x;
lastY = y;
}
(d as WindChartControl).LinePath.Data = myGeometryGroup;
}