私はスタックエリアチャートを使用していますので、以下のようにマウスでデータポイント間隔を選択します。Datachartでマウスを使用してデータ間隔を選択する
私はいくつかのアプリケーションは、しかし、この機能を提供し、私はそれを行う方法を見つけることができなかったことを知っています。
私に正しい方法を教えてください。
私はスタックエリアチャートを使用していますので、以下のようにマウスでデータポイント間隔を選択します。Datachartでマウスを使用してデータ間隔を選択する
私はいくつかのアプリケーションは、しかし、この機能を提供し、私はそれを行う方法を見つけることができなかったことを知っています。
私に正しい方法を教えてください。
あなたが必要な用語が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>
に選択内のポイントを収集し(両側をテストする)、このリストを列挙します。
うわー、ありがとう。私はそれを実装しようとし、これが動作するかどうかをあなたに知らせます。ありがとうございました。 –