• C#winformchart控件曲线和悬停显示


    效果如下:

    关键代码:

    【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]);
                }
            }
    

      

  • 相关阅读:
    OO系统分析员之路用例分析系列(3)业务建模之涉众
    Case study—Courseware Management System
    Creating the Use Case Diagram
    ODBC
    Class Diagram
    OO系统分析员之路用例分析系列(2)用例的类型与粒度
    Cache Object Script语言(转载)
    无法在web服务器上启动调试.
    Abbreviation
    发布订阅原理
  • 原文地址:https://www.cnblogs.com/baozi789654/p/16115336.html
Copyright © 2020-2023  润新知