Как я могу нарисовать линейный график из массива значений?
public class VerticalForceGraph { private List<VerticalForce> vtfList = new List<VerticalForce>(); public int BufferSize { get; set; } public void Add(VerticalForce vtf) { vtfList.Add(vtf); } public void Reset() { vtfList.Clear(); } public int Count {get{return vtfList.Count;} } public float[] GetLeftVTF() { return vtfList.Select(x => (float)x.Left).ToArray(); }
private VerticalForceGraph vtfGraph = new VerticalForceGraph();
public void setVTFData(float[] frameValues) { if (vtfGraph != null) { vtfGraph.Add(new VerticalForce(frameValues)); } }
//это панель, в которой я хочу отобразить линейный график
private void VtfGraphicalViewMode(Graphics graphics) { Pen yellowPen = new Pen(Color.Yellow, 2); Pen bluePen = new Pen(Color.Blue, 2); Pen redPen = new Pen(Color.Red, 2); int hOffset = heatmapWidth / 2; int vOffset = heatmapHeight / 2; //Display title using (Font title_font = new Font("Times New Roman", 20)) { using (StringFormat string_format = new StringFormat()) { string_format.Alignment = StringAlignment.Center; string_format.LineAlignment = StringAlignment.Center; Point title_center = new Point(this.heatmapWidth / 2, 20); Point titleleft = new Point(this.heatmapHeight / 4, heatmapWidth / 10); Font leftfornt = new Font("Times New Roman", 10); Font totalfont = new Font("Times New Roman", 10); Font rightfont = new Font("Times New Roman", 10); graphics.SmoothingMode = SmoothingMode.AntiAlias; graphics.DrawRectangle(outline, new Rectangle(heatmapCoord_X, heatmapCoord_Y, heatmapWidth, heatmapHeight)); Rectangle graph_area = new Rectangle(heatmapCoord_X, heatmapCoord_Y, heatmapWidth, heatmapHeight); graphics.FillRectangle(Brushes.LightBlue, graph_area); Label label = new Label(); graphics.DrawString("VTF Grahical View", title_font, Brushes.Red, title_center, string_format); //Y-axis int xOffset = 50; int yOffset = 20; graphics.DrawLine(redPen, heatmapCoord_X + xOffset, heatmapCoord_Y + (heatmapHeight - 50), heatmapCoord_X + xOffset, heatmapCoord_Y + yOffset ); //X-axis graphics.DrawLine(redPen, heatmapCoord_X + (heatmapWidth - 10), heatmapCoord_Y + (heatmapHeight - 50), heatmapCoord_X + xOffset, heatmapCoord_Y + (heatmapHeight - 50) ); //MessageBox.Show(vtfGraph.Count.ToString()); if (vtfGraph.Count > 0) { float[] left = vtfGraph.GetLeftVTF(0, (vtfGraph.Count > 100 ? 100 : vtfGraph.Count - 1)); for (int i = 0; i < 100; i++) { } } } }
Что я уже пробовал:
//left имеет массив значений
//я хочу построить эти значения в виде линейного графика
//i уже определяет оси x и y
float[] left = vtfGraph.GetLeftVTF(0, (vtfGraph.Count > 100 ? 100 : vtfGraph.Count - 1));
PIEBALDconsult
Разве это не тот же самый вопрос?..
https://www.codeproject.com/Questions/1202562/How-do-I-draw-line-chart-in-Csharp
Member 13210933
Да, это то же самое...потому что я застрял здесь так долго :-( я не понимаю, как нарисовать живую линейную диаграмму из значений, которые у меня есть.
Member 13210933
Даже никто не понял моего вопроса : - (потому что я не очень хороший объяснитель.