Answered by:
Zoom every point in chart by mouse over

Question
-
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; } } }
- Moved by Fred Bao Wednesday, April 23, 2014 6:59 AM Not A C# Related Issue
Tuesday, April 15, 2014 8:28 AM
Answers
-
Hello Neda.IT,
It seems that you are using the chart control, could you please tell us which you are using?
If it is System.Windows.Forms.DataVisualization.Charting.Chart, then I would like to suggest you posting it to:
http://social.msdn.microsoft.com/Forums/vstudio/en-US/home?forum=MSWinWebChart
If it is MS Chart, then you can post this issue to:
http://social.msdn.microsoft.com/Forums/windows/en-US/home?category=windowsforms
Regards.
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click HERE to participate the survey.- Proposed as answer by Just Karl Friday, April 25, 2014 3:59 PM
- Marked as answer by Dave PatrickMVP Friday, May 2, 2014 6:38 PM
Wednesday, April 16, 2014 2:55 AM