I have a chart on my c# windows application. I want to zoom every point of chart when mouse on them. like google map
I mean I don't want zoom all part of chart I want zoom just specefic point like google map
public partial class Form1 : Form { int[] myArrayX = new int[5]; double[] myArrayY = new double[5]; int lastX = -1; double lastY = -0.6; double xmax; Graph.Chart chart; public Form1() { InitializeComponent(); this.MouseWheel += new MouseEventHandler(Form1_MouseWheel); } void Form1_MouseWheel(object sender, MouseEventArgs e) { try { if (e.Delta > 0) { double xMin = chart.ChartAreas["draw"].AxisX.ScaleView.ViewMinimum; double xMax = chart.ChartAreas["draw"].AxisX.ScaleView.ViewMaximum; double yMin = chart.ChartAreas["draw"].AxisY.ScaleView.ViewMinimum; double yMax = chart.ChartAreas["draw"].AxisY.ScaleView.ViewMaximum; double posXStart = chart.ChartAreas["draw"].AxisX.PixelPositionToValue(e.Location.X) - (xMax - xMin) / 2; double posXFinish = chart.ChartAreas["draw"].AxisX.PixelPositionToValue(e.Location.X) + (xMax - xMin) / 2; double posYStart = chart.ChartAreas["draw"].AxisY.PixelPositionToValue(e.Location.Y) - (yMax - yMin) / 2; double posYFinish = chart.ChartAreas["draw"].AxisY.PixelPositionToValue(e.Location.Y) + (yMax - yMin) / 2; chart.ChartAreas["draw"].AxisX.ScaleView.Zoom(posXStart, posXFinish); chart.ChartAreas["draw"].AxisY.ScaleView.Zoom(posYStart, posYFinish); } else if (e.Delta < 0) { ZoomOut(); } } catch { } } private void ZoomOut() { chart.ChartAreas["draw"].AxisX.ScaleView.ZoomReset(); chart.ChartAreas["draw"].AxisY.ScaleView.ZoomReset(); } void CreateNewGraph() { // Create new Graph chart = new Graph.Chart(); chart.Location = new System.Drawing.Point(13, 185); chart.Size = new System.Drawing.Size(900, 500); chart.ChartAreas.Add("draw"); chart.ChartAreas["draw"].AxisX.Minimum = 0; chart.ChartAreas["draw"].AxisX.Maximum = 20; chart.ChartAreas["draw"].AxisX.Interval = 1; chart.ChartAreas["draw"].AxisX.MajorGrid.LineColor = Color.White; chart.ChartAreas["draw"].AxisX.MajorGrid.LineDashStyle = Graph.ChartDashStyle.Dash; chart.ChartAreas["draw"].AxisY.Minimum = -0.4; chart.ChartAreas["draw"].AxisY.Maximum = 1; chart.ChartAreas["draw"].AxisY.Interval = 0.2; chart.ChartAreas["draw"].AxisY.MajorGrid.LineColor = Color.White; chart.ChartAreas["draw"].AxisY.MajorGrid.LineDashStyle = Graph.ChartDashStyle.Dash; chart.ChartAreas["draw"].BackColor = Color.Black; var series = chart.Series.Add("Test"); chart.Series["Test"].ChartType = Graph.SeriesChartType.Line; chart.Series["Test"].Color = Color.Yellow; chart.Series["Test"].BorderWidth = 3; chart.Legends.Add("MyLegend"); chart.Legends["MyLegend"].BorderColor = Color.YellowGreen; // Set automatic zooming chart.ChartAreas["draw"].AxisX.ScaleView.Zoomable = true; chart.ChartAreas["draw"].AxisY.ScaleView.Zoomable = true; // Set automatic scrolling chart.ChartAreas["draw"].CursorX.AutoScroll = true; chart.ChartAreas["draw"].CursorY.AutoScroll = true; // Allow user selection for Zoom chart.ChartAreas["draw"].CursorX.IsUserSelectionEnabled = true; chart.ChartAreas["draw"].CursorY.IsUserSelectionEnabled = true; chart.ChartAreas["draw"].AxisX.ScaleView.Zoomable = true; chart.ChartAreas["draw"].AxisY.ScaleView.Zoomable = true; //chart.MouseWheel += new MouseEventHandler(chart_MouseWheel); } private void Form1_Load(object sender, EventArgs e) { CreateNewGraph(); } private void timer1_Tick(object sender, EventArgs e) { fillarray(); for (int i = 1; i <= 5; i += 1) { chart.Series["Test"].Points.AddXY(myArrayX[i - 1], myArrayY[i - 1]); xmax = myArrayX[i - 1]; } if (xmax >= 20) { chart.ChartAreas["draw"].AxisX.ScrollBar.Enabled = true; chart.ChartAreas["draw"].AxisX.ScaleView.Zoomable = true; chart.ChartAreas["draw"].AxisX.ScaleView.Zoom(0, xmax); } Controls.Add(this.chart); } public void fillarray() { for (int i = 1; i <= 5; i += 1) { lastX = lastX + 1; myArrayX[i - 1] = lastX; } for (int i = 1; i < 5; i += 1) { lastY = lastY + 0.2; myArrayY[i - 1] = lastY; } } }