private void DrawAxis(Graphics g, bool drawHorizontalMarkers) { g.DrawLine(new Pen(Color.Black, 1.0f), MarginLeft, Height - MarginBottomDiagram, Width - MarginRight, Height - MarginBottomDiagram); if (drawHorizontalMarkers) { var xData = PlotDataSeries.First().XCoordData.ToArray(); var fontForMarkers = new Font("Arial", 8f); var markerPen = new Pen(Color.Black, 1.0f); var countMarkers = 3; float markerInterval = (float)(Width - MarginRight - MarginLeft) / ((float)countMarkers - 1f); float markerDataInterval = (float)(xData.Length) / ((float)countMarkers - 1f); for (var i = 0; i < countMarkers; i++) { g.DrawLine(markerPen, MarginLeft + i * markerInterval, Height - MarginBottomDiagram + 3, MarginLeft + i * markerInterval, Height - MarginBottomDiagram); } } g.DrawLine(new Pen(Color.Black, 1.0f), MarginLeft, Height - MarginBottomDiagram, MarginLeft, MarginTop); }
public void DrawTo(string file) { using (Bitmap bitmap = new Bitmap(Width, Height)) { using (Graphics g = Graphics.FromImage(bitmap)) { g.Clear(Color.White); DrawHorLines(g, 10); foreach (var item in PlotDataSeries.OrderBy(x => x.Order)) { DrawOneCurve(g, item.Pen, item.DataRow); } DrawAxis(g, drawHorizontalMarkers: true); DrawingLegend(g); } bitmap.Save(file, ImageFormat.Png); } }