2017-06-20 26 views
1

我使用堆积区域图表,我想用下面的鼠标选择一个数据点间隔。用鼠标在Datachart上选择数据区间

enter image description here

我知道但是,某些应用程序提供此功能,我无法找到如何做到这一点。

你能告诉我正确的方法吗?

回答

0

你所需要的期限为DataVisualization.Charting.Cursor

可以使用性质的组合:

// a few short references: 
    ChartArea ca = chart1.ChartAreas[0]; 
    Axis ax = ca.AxisX; 
    var cx = ca.CursorX; 


    cx.IsUserEnabled = true;    // allow a cursor to be placed 
    cx.IsUserSelectionEnabled = true; // allow it to be used for selecting 
    ax.ScaleView.Zoomable = false;  // prevent from automatically zooming in 

这里是选择的第一个和最后一个值:

var x1 = cx.SelectionStart; 
var x2 = cx.SelectionEnd; 

这里是第一和最后选择DataPoints

var p1 = s.Points.Select(x => x).Where(x => x.XValue >= x1).First(); 
var p2 = s.Points.Select(x => x).Where(x => x.XValue <= x2).Last(); 

与第一和最后一个DataPoints的指数选择:

var i1 = s.Points.IndexOf(p1); 
var i2 = s.Points.IndexOf(p2); 

现在你可以告诉选择哪些点:

textBox1.Text += (i2 - i1) + " points selected.\r\n\r\n"; 

for (int i = i1; i < i2; i++) 
{ 
    textBox1.Text += i + ". " + chart1.Series[0].Points[i].ToString() + "\r\n"; 
    chart1.Series[0].Points[i].Color = Color.Red; 

} 

注意:代码来识别起点和终点分数假设所有DataPoints都加入增加的x值顺序。由于您可以按任意顺序添加DataPoints,因此在插入失序点时将失败!在这种情况下,您将代之以在List<DataPoint>中选择(双方测试)中的点,然后列举此列表。

+0

哇,谢谢。我会尽力实施它,并让你知道这是否有效。谢谢。 –