public void AddAreas(ChartStyleGridlines csg) { int nSeries = AreaList.Count; int nPoints = AreaList[0].AreaSeries.Points.Count; double[] ySum = new double[nPoints]; Point[] pts = new Point[2 * nPoints]; Point[] pt0 = new Point[nPoints]; Point[] pt1 = new Point[nPoints]; for (int i = 0; i < nPoints; i++) { ySum[i] = AreaAxis; } foreach (DataSeriesArea area in AreaList) { area.AddBorderPattern(); for (int i = 0; i < nPoints; i++) { pt0[i] = new Point(area.AreaSeries.Points[i].X, ySum[i]); ySum[i] += area.AreaSeries.Points[i].Y; pt1[i] = new Point(area.AreaSeries.Points[i].X, ySum[i]); pts[i] = csg.NormalizePoint(pt0[i]); pts[2 * nPoints - 1 - i] = csg.NormalizePoint(pt1[i]); } area.AreaSeries.Points.Clear(); for (int i = 0; i < pts.GetLength(0); i++) { area.AreaSeries.Points.Add(pts[i]); } csg.ChartCanvas.Children.Add(area.AreaSeries); } }
private void DrawHorizontalBar(Point pt, ChartStyleGridlines csg, DataSeriesBar ds, double width, double x) { Polygon plg = new Polygon(); plg.Fill = ds.FillColor; plg.Stroke = ds.BorderColor; plg.StrokeThickness = ds.BorderThickness; double y = pt.Y - 0.5 * csg.YTick; plg.Points.Add(csg.NormalizePoint(new Point(x, y - width / 2))); plg.Points.Add(csg.NormalizePoint(new Point(x, y + width / 2))); plg.Points.Add(csg.NormalizePoint(new Point(x + pt.X, y + width / 2))); plg.Points.Add(csg.NormalizePoint(new Point(x + pt.X, y - width / 2))); csg.ChartCanvas.Children.Add(plg); }
private void DrawVerticalBar(Point pt, ChartStyleGridlines csg, DataSeriesBar ds, double width, double y) { Polygon plg = new Polygon(); plg.Fill = ds.FillColor; plg.Stroke = ds.BorderColor; plg.StrokeThickness = ds.BorderThickness; double x = pt.X - 0.5 * csg.XTick; plg.Points.Add(csg.NormalizePoint(new Point(x - width / 2, y))); plg.Points.Add(csg.NormalizePoint(new Point(x + width / 2, y))); plg.Points.Add(csg.NormalizePoint(new Point(x + width / 2, y + pt.Y))); plg.Points.Add(csg.NormalizePoint(new Point(x - width / 2, y + pt.Y))); csg.ChartCanvas.Children.Add(plg); }
public void AddStairstep(ChartStyleGridlines csg) { foreach (DataSeriesStairstep ds in DataList) { List <Point> ptList = new List <Point>(); Point[] pts = new Point[2]; ds.AddStairstepLinePattern(); // Create Stairstep data: for (int i = 0; i < ds.LineSeries.Points.Count - 1; i++) { pts[0] = ds.LineSeries.Points[i]; pts[1] = ds.LineSeries.Points[i + 1]; ptList.Add(pts[0]); ptList.Add(new Point(pts[1].X, pts[0].Y)); } ptList.Add(new Point(pts[1].X, pts[0].Y)); // Draw stairstep line: for (int i = 0; i < ptList.Count; i++) { ds.StairstepLineSeries.Points.Add(csg.NormalizePoint(ptList[i])); } csg.ChartCanvas.Children.Add(ds.StairstepLineSeries); } }
public void AddErrorbars(ChartStyleGridlines csg) { Line line; foreach (DataSeriesErrorbar ds in DataList) { double barLength = (csg.NormalizePoint(ds.LineSeries.Points[1]).X - csg.NormalizePoint(ds.LineSeries.Points[0]).X) / 3; for (int i = 0; i < ds.ErrorLineSeries.Points.Count; i++) { Point ep = ds.ErrorLineSeries.Points[i]; Point dp = ds.LineSeries.Points[i]; Point[] pts = new Point[2]; pts[0] = csg.NormalizePoint(new Point(dp.X, dp.Y - ep.Y / 2)); pts[1] = csg.NormalizePoint(new Point(dp.X, dp.Y + ep.Y / 2)); line = new Line(); line.Stroke = ds.ErrorLineColor; line.StrokeThickness = ds.ErrorLineThickness; ds.AddErrorLinePattern(); line.X1 = pts[0].X; line.Y1 = pts[0].Y; line.X2 = pts[1].X; line.Y2 = pts[1].Y; csg.ChartCanvas.Children.Add(line); line = new Line(); line.Stroke = ds.ErrorLineColor; line.StrokeThickness = ds.ErrorLineThickness; ds.AddErrorLinePattern(); line.X1 = pts[0].X - barLength / 2; line.Y1 = pts[0].Y; line.X2 = pts[0].X + barLength / 2; line.Y2 = pts[0].Y; csg.ChartCanvas.Children.Add(line); line = new Line(); line.Stroke = ds.ErrorLineColor; line.StrokeThickness = ds.ErrorLineThickness; ds.AddErrorLinePattern(); line.X1 = pts[1].X - barLength / 2; line.Y1 = pts[1].Y; line.X2 = pts[1].X + barLength / 2; line.Y2 = pts[1].Y; csg.ChartCanvas.Children.Add(line); } } }
private void DrawHorizontalBar1(Point pt, ChartStyleGridlines csg, DataSeriesBar ds, int nSeries, int n) { Polygon plg = new Polygon(); plg.Fill = ds.FillColor; plg.Stroke = ds.BorderColor; plg.StrokeThickness = ds.BorderThickness; double width = 0.7 * csg.YTick; double w1 = width / nSeries; double w = ds.BarWidth * w1; double space = (w1 - w) / 2; double y = pt.Y - 0.5 * csg.YTick; plg.Points.Add(csg.NormalizePoint(new Point(0, y - width / 2 + space + n * w1))); plg.Points.Add(csg.NormalizePoint(new Point(0, y - width / 2 + space + n * w1 + w))); plg.Points.Add(csg.NormalizePoint(new Point(pt.X, y - width / 2 + space + n * w1 + w))); plg.Points.Add(csg.NormalizePoint(new Point(pt.X, y - width / 2 + space + n * w1))); csg.ChartCanvas.Children.Add(plg); }
public void AddStems(ChartStyleGridlines csg) { foreach (DataSeries ds in DataList) { Point[] pts = new Point[2]; for (int i = 0; i < ds.LineSeries.Points.Count; i++) { pts[0] = csg.NormalizePoint(new Point(ds.LineSeries.Points[i].X, 0)); pts[1] = csg.NormalizePoint(ds.LineSeries.Points[i]); Line line = new Line(); line.Stroke = ds.LineColor; line.StrokeThickness = ds.LineThickness; line.X1 = pts[0].X; line.Y1 = pts[0].Y; line.X2 = pts[1].X; line.Y2 = pts[1].Y; csg.ChartCanvas.Children.Add(line); ds.Symbols.AddSymbol(csg.ChartCanvas, csg.NormalizePoint(ds.LineSeries.Points[i])); } } }