using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.Charting; using WeifenLuo.WinFormsUI.Docking; namespace friction { public partial class PanelRadarGraph : DockContent { MainForm m_Owner = null; DataHandler m_DataHandler = null; string m_CurSpring = ""; public PanelRadarGraph(MainForm owner, DataHandler data) { InitializeComponent(); m_Owner = owner; m_DataHandler = data; Theme.Apply(this); chart.ChartAreas[0].AxisY.Maximum = 10; chart.Series["SeriesHigh"].Color = Color.FromArgb(255, 200, 200, 200); chart.Series["SeriesPotential"].Color = Color.FromArgb(255, 180, 180, 180); chart.Series["SeriesNo"].Color = Color.FromArgb(255, 140, 140, 140); chart.Series["SeriesMax"].Color = Theme.Red; chart.Series["SeriesAvg"].Color = Theme.Yellow; chart.Series["SeriesMin"].Color = Theme.Green; chart.ChartAreas[0].AxisX.MajorGrid.LineWidth = 1; chart.ChartAreas[0].AxisY.MajorGrid.LineWidth = 1; chart.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Black; chart.ChartAreas[0].AxisX.MajorTickMark.Enabled = false; chart.ChartAreas[0].AxisX.MinorTickMark.Enabled = false; chart.ChartAreas[0].AxisY.MajorTickMark.Enabled = true; chart.ChartAreas[0].AxisY.MajorTickMark.LineWidth = 1; chart.ChartAreas[0].AxisY.MajorTickMark.LineColor = Color.FromArgb(150, 0, 0, 0); chart.ChartAreas[0].AxisY.MinorTickMark.Enabled = false; foreach (var series in chart.Series) series["AreaDrawingStyle"] = "Polygon"; } public void Reset() { m_CurSpring = ""; } public void UpdateGraph() { string strSpring = m_DataHandler.GetCurSpring(); if (m_CurSpring == strSpring) return; lbSpring.Text = "Material Spring: " + strSpring; lbSpring.BackColor = Color.Transparent; lbSpring.ForeColor = Color.Orange; foreach (var series in chart.Series) series.Points.Clear(); List graphData = m_DataHandler.GetAvgAll(strSpring); List xValues = new List(); List yValues = new List(); foreach(var data in graphData) { chart.Series["SeriesMax"].Points.AddXY(data.m_strTable, data.m_fMax); chart.Series["SeriesAvg"].Points.AddXY(data.m_strTable, data.m_fAvg); chart.Series["SeriesMin"].Points.AddXY(data.m_strTable, data.m_fMin); chart.Series["SeriesHigh"].Points.AddXY(data.m_strTable, (int)Config.ANALYSIS.RISK.HIGH); chart.Series["SeriesPotential"].Points.AddXY(data.m_strTable, (int)Config.ANALYSIS.RISK.POTENTIAL); chart.Series["SeriesNo"].Points.AddXY(data.m_strTable, (int)Config.ANALYSIS.RISK.NO); } m_CurSpring = strSpring; } public Bitmap CopyChart() { MemoryStream ms = new MemoryStream(); chart.SaveImage(ms, ChartImageFormat.Bmp); Bitmap bm = new Bitmap(ms); return bm; } private void chart_MouseClick(object sender, MouseEventArgs e) { HitTestResult result = chart.HitTest(e.X, e.Y); if(result.ChartElementType == ChartElementType.AxisLabels && result.Object != null) { string strTable = (string)result.Object; m_Owner.OnRadarSelectTable(strTable); } } } }