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
の使い方は?
ズームを使用する理由は、これがチャートの下部にあるスクロールバーを有効にするためです。
を試してみてください、私はあなたが解決策を見つけると同じissue..Didが直面しているのですか? – Gaddigesh
nopでは、VisiBlox ChartsとTA-Libライブラリーの組み合わせに変更されました。非常に多くのチャーティング・ライブラリーとインジケーター・ライブラリーを評価しましたので、さらに質問がある場合はお知らせください。 –