C#--winform--chart控件曲线和悬停显示
效果如下:
关键代码:
【1】 窗体加载的时候
1 | InitCahrt( this .chart_trace, "Torque/Angle" ); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /// <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】绘制曲线和网格线,间距等设置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 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】鼠标悬停显示
1 2 3 4 5 6 7 8 9 10 11 12 13 | //鼠标悬停显示曲线点的值 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]); } } |
分类:
winform窗体
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2020-04-08 C# --SqlServer--调用SQLServer存储过程