2011-09-12 28 views
2

私はDataVisualization.Charting.Chartを持っており、マウスホイールでChartAreaをズームしたいと思います。それほど難しくない。今、私は位置ズームをしたい、すなわち、マウスカーソルの下のポイントがズームの中心です。 OK、私は単純な数学を行い、軸の新しい左/右端をどのように計算するかを考えました。私は新しい値にズームMSフォームグラフが正常に動作しない...またはグラフの位置をズームする方法?

chart1.ChartAreas["ChartArea1"].AxisX.Minimum 

Maximumを設定した場合、それは魔法のように動作します。しかし、もし私が、zoomの値に正しく動作しません。私のマウスホイールリスナーは

void Chart1MouseWheel(object sender, MouseEventArgs e) 
    { 
     var min = chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.ViewMinimum; 
     var max = chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.ViewMaximum; 
     var oldScale = max - min; 

     var newScale = oldScale + (oldScale * 0.001 * e.Delta); 

     // calculate positional zoom 
     var xAbs = chart1.ChartAreas["ChartArea1"].AxisX.PixelPositionToValue(e.X); 
     var xRel = (xAbs - min)/(max - min); 
     var min2 = min + oldScale*xRel - newScale*xRel; 

     var max2 = min2 + newScale; 

     // if i do that, it works perfectly 
     //chart1.ChartAreas["ChartArea1"].AxisX.Minimum = min2; 
     //chart1.ChartAreas["ChartArea1"].AxisX.Maximum = max2; 

     // this does NOT work (at least not exactly) 
     chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.Zoom(min2, max2); 
    } 

私は間違っていましたか? Zoomの使い方は?

ズームを使用する理由は、これがチャートの下部にあるスクロールバーを有効にするためです。

+0

を試してみてください、私はあなたが解決策を見つけると同じissue..Didが直面しているのですか? – Gaddigesh

+0

nopでは、VisiBlox ChartsとTA-Libライブラリーの組み合わせに変更されました。非常に多くのチャーティング・ライブラリーとインジケーター・ライブラリーを評価しましたので、さらに質問がある場合はお知らせください。 –

答えて

1

この

chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.Zoom(min2, max2-min2);

関連する問題