1

MS Chart コントロール 4 を使用してトレンド アプリケーションを実行しています。

ズームとスクロールをマウス ホイールと右ボタンに統合したことで、コントロールが非常にスムーズになりました。

ただし、ChartArea.Axis メソッドが実際にはグリッド、ラベル、およびストリップラインをズームまたはスクロールしないScaleView.ScrollことScaleView.Zoomを認識しています。

代わりに、ポイント シリーズをズームおよびスクロールしますが、グリッド ラベルはそのまま保持し、ラベル値のみを調整します。

たとえば、このサンプル チャートを右にスクロールしたい場合:

ここに画像の説明を入力

私はこれを持っています。

ここに画像の説明を入力

基本的に、これは私が達成したいことです:

ここに画像の説明を入力

MS Chart コントロールで実際のスクロールとズームを行うにはどうすればよいですか?

編集: X 値を DateTimes に設定することで、必要な動作を得ることができました。ただし、X 軸で double を使用したいと思います。

4

2 に答える 2

1

ScaleView.Position に基づいて IntervalOffset を手動で調整できます。

チャートが更新されるたびにこのコードを呼び出します (例: AxisViewChanged および AxisScrollBarClicked イベント)。

if (chart1.ChartAreas[0].AxisY.ScaleView.IsZoomed)
{
    double offset = chart1.ChartAreas[0].AxisY.Minimum - chart1.ChartAreas[0].AxisY.ScaleView.Position;

    chart1.ChartAreas[0].AxisY.LabelStyle.IntervalOffset = offset;
    chart1.ChartAreas[0].AxisY.MajorGrid.IntervalOffset = offset;
    chart1.ChartAreas[0].AxisY.MajorTickMark.IntervalOffset = offset;
    chart1.ChartAreas[0].AxisY.MinorGrid.IntervalOffset = offset;
    chart1.ChartAreas[0].AxisY.MinorTickMark.IntervalOffset = offset;
}
else
{
    chart1.ChartAreas[0].AxisY.LabelStyle.IntervalOffset = 0;
    chart1.ChartAreas[0].AxisY.MajorGrid.IntervalOffset = 0;
    chart1.ChartAreas[0].AxisY.MajorTickMark.IntervalOffset = 0;
    chart1.ChartAreas[0].AxisY.MinorGrid.IntervalOffset = 0;
    chart1.ChartAreas[0].AxisY.MinorTickMark.IntervalOffset = 0;
}
于 2015-02-25T19:00:31.950 に答える
1

この動作は仕様によるものと思われます: グラフをスムーズにスクロールできるのは、DateTime 型の軸の値のみです。

于 2012-11-21T09:56:54.870 に答える