1

ズームインするとすべてがうまくスクロールする複数のチャート領域に多くのシリーズをうまく実装しました。

データが最初に表示されるとき、最小および最大の X 値 (日付/時刻) は、SQL から抽出したデータによって決定されます。ただし、ユーザーはグラフを拡大するオプションがあり、その時点で水平スクロール バーが表示されます。ここまでは順調ですね。

私が達成したいのは、WinForm のどこかに 2 つのテキスト コントロールを配置して、現在表示されている最小 X 値と最大 X 値を表示することです。ユーザーが水平スクロール バーを左右に動かすと、これらの値は自動的に更新されます。

どのプロパティとメソッドを調べる必要がありますか?

ありがとう、KH

4

1 に答える 1

0

AxisViewChanged イベントを使用して、可視範囲内にあるシリーズ ポイントを確認できます。これが私が意味することの例です:

void chart1_AxisViewChanged(object sender, System.Windows.Forms.DataVisualization.Charting.ViewEventArgs e)
{
    var left = e.ChartArea.CursorX.SelectionStart;
    var right = e.ChartArea.CursorX.SelectionEnd;
    var top = e.ChartArea.CursorY.SelectionStart;
    var bottom = e.ChartArea.CursorY.SelectionEnd;

    foreach (var series in this.chart1.Series)
    {
        if (series.ChartArea == e.ChartArea.Name)
        {
            var pointsInRange = series.Points.Where(p => p.XValue <= right && p.XValue >= left &&
                                                            p.YValues[0] <= top && p.YValues[0] >= bottom);
            if (pointsInRange.Any())
            {
                var minY = pointsInRange.Min(p => p.YValues[0]);
                var maxY = pointsInRange.Max(p => p.YValues[0]);

                // print the points in your textbox
                textBox1.AppendText("Series: " + series.Name + " min visible Y=" + minY + " max visibleY=" + maxY + Environment.NewLine);
            }
        }
    }
}
于 2012-10-04T20:21:28.017 に答える