MS chart с использованием polygonannotation и конкретной точки ряда
Привет, я пытаюсь использовать PolygonAnnotation для рисования многоугольника внутри диаграммы, где у меня есть четыре точки, которые я хотел бы использовать в качестве вершины.
Эти точки помещаются во время выполнения в пузырьковую серию
System.Windows.Forms.DataVisualization.Charting.Series serieSA = chartCartesian.Series.FindByName("SeriesSafetyArea"); DataPoint dpA = new DataPoint(radarConfigured.SafetyArea.PointA.X,new Double[]{radarConfigured.SafetyArea.PointA.Y, -20}); DataPoint dpB = new DataPoint(radarConfigured.SafetyArea.PointB.X, new Double[]{radarConfigured.SafetyArea.PointB.Y, -20}); DataPoint dpC = new DataPoint(radarConfigured.SafetyArea.PointC.X, new Double[] { radarConfigured.SafetyArea.PointC.Y, -20 }); DataPoint dpD = new DataPoint(radarConfigured.SafetyArea.PointD.X, new Double[] { radarConfigured.SafetyArea.PointD.Y, -20 }); dpA.Label = "A"; dpB.Label = "B"; dpC.Label = "C"; dpD.Label = "D"; serieSA.Points.Add(dpA); serieSA.Points.Add(dpB); serieSA.Points.Add(dpC); serieSA.Points.Add(dpD);
Я хотел бы получить фигуру, подобную прямоугольнику, используя эти точки. я пытался подписать этот код
Что я уже пробовал:
safetyAreaAnnotation = new PolygonAnnotation(); safetyAreaAnnotation.ClipToChartArea = chartCartesian.ChartAreas[0].Name; //safetyAreaAnnotation.AnchorX = 10; //safetyAreaAnnotation.AnchorY = 20; PointF[] points = new PointF[4]; points[0].X = (float)dpA.XValue; points[0].Y = (float)dpA.YValues[0] ; points[1].X = (float)dpB.XValue; points[1].Y = (float)dpB.YValues[0]; points[2].X = (float)dpC.XValue; points[2].Y = (float)dpC.YValues[0]; points[3].X = (float)dpD.XValue; points[3].Y = (float)dpD.YValues[0]; byte[] type = new byte[4]; type[0] = (byte)PathPointType.Start; type[1] = (byte)PathPointType.Line; type[2] = (byte)PathPointType.Line; type[3] = (byte)PathPointType.CloseSubpath; safetyAreaAnnotation.GraphicsPath=new System.Drawing.Drawing2D.GraphicsPath(points,type); // //safetyAreaAnnotation.IsSizeAlwaysRelative = false; // //safetyAreaAnnotation.BackColor = Color.Red; safetyAreaAnnotation.AxisX = chartCartesian.ChartAreas[0].AxisX; safetyAreaAnnotation.AxisY = chartCartesian.ChartAreas[0].AxisY; safetyAreaAnnotation.AnchorDataPoint = serieSA.Points[0]; // //safetyAreaAnnotation.AnchorX = 1; // //safetyAreaAnnotation.AnchorY = 20; chartCartesian.Annotations.Add(safetyAreaAnnotation);
Но это не работает. В моем графике ничего не отображается. Может быть, мне следует использовать что-то другое, чтобы нарисовать этот многоугольник?