chart控件获取鼠标点击坐标,十字坐标跟随——c#

方法一:鼠标点击波形

鼠标点击波形,显示点击位置的x,y值

private void chart1_MouseClick(object sender, MouseEventArgs e)  //chart1是你建的chart控件,实际名字根据你自己代码里的命名
        {            
            HitTestResult hit = chart1.HitTest(e.X, e.Y);
            if (hit.Series != null)
            {
                var xValue = hit.Series.Points[hit.PointIndex].XValue;
                var yValue = hit.Series.Points[hit.PointIndex].YValues.First();
                textBox1.Text = string.Format("{0:F0},{1:F0}", "x:"+xValue, "y:"+yValue);//textbox1也是自己建的一个专门用来显示的内容框,也可以用messagebox直接弹出内容
            }
            else
            {
                textBox1.Text="未点击到波形曲线";
            }
        }

 

调用方法:

chart1.MouseClick += new MouseEventHandler(chart1_MouseClick);

 

方法二:鼠标移动到相应点位自动显示相关数值

private void chart1_MouseMove(object sender, MouseEventArgs e)
        {
            var area = chart1.ChartAreas[0];

            double xValue = area.AxisX.PixelPositionToValue(e.X);
            double yValue = area.AxisY.PixelPositionToValue(e.Y);
            textBox1.Text = string.Format("{0:F0},{1:F0}", xValue, yValue);
        }

调用方法:

chart1.MouseMove += new MouseEventHandler(chart1_MouseMove);

 

 

绘制十字坐标:


//清空十字架
chartVoltage.Series[1].Points.Clear();
chartVoltage.Series[2].Points.Clear();
//获取当前鼠标坐标
double cursorX = chartVoltage.ChartAreas[0].AxisX.PixelPositionToValue(e.X);
double cursorY = chartVoltage.ChartAreas[0].AxisY.PixelPositionToValue(e.Y);
//绘制竖线下半部分
chartVoltage.Series[1].Points.AddXY(cursorX, chartVoltage.ChartAreas[0].AxisY.Minimum);
//绘制竖线上半部分
chartVoltage.Series[1].Points.AddXY(cursorX, chartVoltage.ChartAreas[0].AxisY.Maximum);
//绘制横线左半部分
chartVoltage.Series[2].Points.AddXY(chartVoltage.ChartAreas[0].AxisX.Minimum, cursorY);
//绘制横线右半部分
chartVoltage.Series[2].Points.AddXY(chartVoltage.ChartAreas[0].AxisX.Maximum, cursorY);

posted @ 2021-01-11 20:39  vv彭  阅读(2706)  评论(1编辑  收藏  举报