2017-06-20 10 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

うわー、ありがとう。私はそれを実装しようとし、これが動作するかどうかをあなたに知らせます。ありがとうございました。 –

関連する問題