C#--winform--chart控件曲線和懸停顯示


效果如下:

 

關鍵代碼:

【1】 窗體加載的時候

InitCahrt(this.chart_trace,"Torque/Angle");

  

        /// <summary>
        /// 初始化chart圖標,設置一些樣式
        /// </summary>
        /// <param name="chart"></param>
        /// <param name="chartName"></param>
        private void InitCahrt(Chart chart, string chartName)
        {
            chart.Series.Clear();
            ChartHelper.AddSeries(chart, chartName, SeriesChartType.Spline, Color.FromArgb(100, 46, 199, 201), Color.Red, false);
            ChartHelper.SetTitle(chart, "擰緊曲線圖", new Font("微軟雅黑", 10), Docking.Bottom, Color.Black);
            ChartHelper.SetStyle(chart, Color.Transparent, Color.Black);
            ChartHelper.SetLegend(chart, Docking.Top, StringAlignment.Center, Color.Transparent, Color.Black);
            ChartHelper.SetXY(chart, "角度.Deg", "扭矩.Nm", StringAlignment.Far, Color.Black, Color.Black, AxisArrowStyle.None, 50, 0.2);
            ChartHelper.SetMajorGrid(chart,true,true, Color.Gray, 100, 1);
        }

  

【2】繪制曲線和網格線,間距等設置

        private void ITool_TracePointsEvent(List<double> arg1, List<double> arg2)
        {
            this.BeginInvoke(new Action(() =>
            {
                
                double xMin = arg1.Min();
                double xMax = arg1.Max();              
                //X間隔
                double xInterval = Math.Round(xMax / 15,1) ;
                chart_trace.ChartAreas[0].AxisX.Interval = xInterval;
                //X軸網格的間距
                chart_trace.ChartAreas[0].AxisX.MajorGrid.Interval = xInterval*2;
                //X軸最小和最大
                chart_trace.ChartAreas[0].AxisX.Minimum = xMin;
                chart_trace.ChartAreas[0].AxisX.Maximum = xMax+ xInterval;

                //網格線設置為虛線
                chart_trace.ChartAreas[0].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
                chart_trace.ChartAreas[0].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
                
                double yMin = arg2.Min();
                double yMax = arg2.Max();
                //Y間隔
                double yInterval = Math.Round(yMax / 15, 1);
                chart_trace.ChartAreas[0].AxisY.Interval = yInterval;
                //Y軸網格的間距
                chart_trace.ChartAreas[0].AxisY.MajorGrid.Interval = yInterval * 2;
                //Y軸最小和最大
                chart_trace.ChartAreas[0].AxisY.Minimum = yMin;
                chart_trace.ChartAreas[0].AxisY.Maximum = yMax+yInterval;

                this.chart_trace.Series[0].Points.DataBindXY(arg1,arg2);
            }));
        }

  

【3】鼠標懸停顯示

        //鼠標懸停顯示曲線點的值
        System.Windows.Forms.DataVisualization.Charting.ToolTipEventArgs toolTipEventArgs;
        private void chart_trace_GetToolTipText(object sender, ToolTipEventArgs e)
        {
            toolTipEventArgs = e;

            if (e.HitTestResult.ChartElementType == System.Windows.Forms.DataVisualization.Charting.ChartElementType.DataPoint)
            {
                int i = e.HitTestResult.PointIndex;
                System.Windows.Forms.DataVisualization.Charting.DataPoint dp = e.HitTestResult.Series.Points[i];
                e.Text = string.Format("A:{0},T:{1}", dp.XValue.ToString(), dp.YValues[0]);
            }
        }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM