Sen isteyeceksiniz
MouseWheel olayını kullanın. Grafiğinizi yakınlaştırdığınızdan emin olun. Örneğin:
private void chData_MouseWheel(object sender, MouseEventArgs e)
{
try
{
if (e.Delta < 0)
{
chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset();
chart1.ChartAreas[0].AxisY.ScaleView.ZoomReset();
}
if (e.Delta > 0)
{
double xMin = chart1.ChartAreas[0].AxisX.ScaleView.ViewMinimum;
double xMax = chart1.ChartAreas[0].AxisX.ScaleView.ViewMaximum;
double yMin = chart1.ChartAreas[0].AxisY.ScaleView.ViewMinimum;
double yMax = chart1.ChartAreas[0].AxisY.ScaleView.ViewMaximum;
double posXStart = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) - (xMax - xMin)/4;
double posXFinish = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) + (xMax - xMin)/4;
double posYStart = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) - (yMax - yMin)/4;
double posYFinish = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) + (yMax - yMin)/4;
chart1.ChartAreas[0].AxisX.ScaleView.Zoom(posXStart, posXFinish);
chart1.ChartAreas[0].AxisY.ScaleView.Zoom(posYStart, posYFinish);
}
}
catch { }
}
muhtemelen bunu yapmanın daha temiz bir yolu yoktur, ama öyle:
chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
Sonra MouseWheel olayı erişin. e.Delta
özelliği, yaptığınız kaç tekerleğin "kaydırdığını" söyler ve yararlı olabilir. Hiç çıkmazsanız bu kodu kullanarak grafiğin orijinal boyutuna geri dönecektir.
Bu yardımcı olur umarız!
Bu benim için harika çalıştı. Teşekkürler! – crocboy
Bu benim için çalışmıyor. Chart'ın Mousewheel olayı ateş etmiyor. –
Görünüşe göre, bunu yapmak için ilk yapmanız gerekir void friendChart_MouseLeave (object sender, EventArgs e) { if (friendChart.Focused) friendChart.Parent.Focus(); } void friendChart_MouseEnter (nesne gönderen, EventArgs e) { if (! FriendChart.Focused) friendChart.Focus(); } '[Mousewheel olayı tetiklenmiyor] (http://stackoverflow.com/questions/13782763/mousewheel-event-not-firing) –