using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Shapes;
namespace WPFDevelopers.Controls
{
public class RadarChart:Control
{
public ObservableCollection RadarArray
{
get { return (ObservableCollection)GetValue(RadarArrayProperty); }
set { SetValue(RadarArrayProperty, value); }
}
public static readonly DependencyProperty RadarArrayProperty =
DependencyProperty.Register(“RadarArray”, typeof(ObservableCollection), typeof(RadarChart), new PropertyMetadata(null));
static RadarChart()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(RadarChart), new FrameworkPropertyMetadata(typeof(RadarChart)));
}
protected override void OnRender(DrawingContext drawingContext)
{
DrawPoints(150, drawingContext,true);
DrawPoints(100, drawingContext);
DrawPoints(50, drawingContext);
var myPen = new Pen
{
Thickness = 4,
Brush = Brushes.DodgerBlue
};
myPen.Freeze();
StreamGeometry streamGeometry = new StreamGeometry();
using (StreamGeometryContext geometryContext = streamGeometry.Open())
{
var h = this.ActualHeight / 2;
var w = this.ActualWidth / 2;
PointCollection points = new PointCollection();
foreach (var item in RadarArray)
{
var ss = new Point((item.PointValue.X - w) / 100 * item.ValueMax + w,(item.PointValue.Y - h) / 100 * item.ValueMax + h);
points.Add(ss);
}
geometryContext.