Problem with zooming in two tee chart

TeeChart for Microsoft Visual Studio .NET, Xamarin Studio (Android, iOS & Forms) & Monodevelop.
Post Reply
Amol
Advanced
Posts: 176
Joined: Mon May 29, 2006 12:00 am

Problem with zooming in two tee chart

Post by Amol » Thu Oct 01, 2009 11:55 am

Hi,
While we use two tee charts having same width and height and allow zooming in both tee charts.
Our requirement is whenever we perform zooming in first tee chart then second tee chart should also zoomed automatically with the same ratio as per first tee chart.
Please let us know how can it be possible?

Gautam

Yeray
Site Admin
Site Admin
Posts: 9614
Joined: Tue Dec 05, 2006 12:00 am
Location: Girona, Catalonia
Contact:

Re: Problem with zooming in two tee chart

Post by Yeray » Thu Oct 01, 2009 1:48 pm

Hi Gautam,

Here is an example of how you could do it. You should do the zooms manually because otherwise, calling the Chart2.Zoom.ZoomRect at Chart1's Zoomed event and the same at reverse, it will result in a infinite loop when you'll zoom.

Code: Select all

        private void InitializeChart()
        {
            tChart1.Aspect.View3D = false;
            tChart2.Aspect.View3D = false;

            Steema.TeeChart.Styles.Points points1 = new Steema.TeeChart.Styles.Points();

            points1.FillSampleValues(25);
            Steema.TeeChart.Styles.Points points2 = (Steema.TeeChart.Styles.Points)points1.Clone();
            tChart1.Series.Add(points1);
            tChart2.Series.Add(points2);
            points1.Color = Color.CadetBlue;
            points2.Color = Color.BlueViolet;

            tChart1.Zoom.Allow = false;
            tChart1.Panning.Allow = Steema.TeeChart.ScrollModes.None;
            tChart2.Zoom.Allow = false;
            tChart2.Panning.Allow = Steema.TeeChart.ScrollModes.None;

            tChart1.MouseDown += new MouseEventHandler(tChart1_MouseDown);
            tChart1.MouseUp += new MouseEventHandler(tChart1_MouseUp);
            tChart1.MouseMove += new MouseEventHandler(tChart1_MouseMove);
            tChart1.AfterDraw += new Steema.TeeChart.PaintChartEventHandler(tChart1_AfterDraw);

            tChart2.MouseDown += new MouseEventHandler(tChart1_MouseDown);
            tChart2.MouseUp += new MouseEventHandler(tChart1_MouseUp);
            tChart2.MouseMove += new MouseEventHandler(tChart2_MouseMove);
            tChart2.AfterDraw += new Steema.TeeChart.PaintChartEventHandler(tChart2_AfterDraw);
        }

        private int MouseDownX, MouseDownY, MouseActX, MouseActY;
        private bool Zooming;

        void tChart1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                MouseDownX = e.X;
                MouseDownY = e.Y;
                Zooming = true;                
            }
        }

        void tChart1_MouseUp(object sender, MouseEventArgs e)
        {
            if (Zooming)
            {
                if ((e.X < MouseDownX) && (e.Y < MouseDownY))
                {
                    tChart1.Axes.Left.Automatic = true;
                    tChart1.Axes.Bottom.Automatic = true;
                    tChart1.Invalidate();
                    tChart2.Axes.Left.Automatic = true;
                    tChart2.Axes.Bottom.Automatic = true;
                    tChart2.Invalidate();
                }
                else
                {
                    tChart1.Axes.Left.SetMinMax(tChart1.Axes.Left.CalcPosPoint(e.Y), tChart1.Axes.Left.CalcPosPoint(MouseDownY));
                    tChart1.Axes.Bottom.SetMinMax(tChart1.Axes.Bottom.CalcPosPoint(MouseDownX), tChart1.Axes.Bottom.CalcPosPoint(e.X));
                    tChart2.Axes.Left.SetMinMax(tChart2.Axes.Left.CalcPosPoint(e.Y), tChart2.Axes.Left.CalcPosPoint(MouseDownY));
                    tChart2.Axes.Bottom.SetMinMax(tChart2.Axes.Bottom.CalcPosPoint(MouseDownX), tChart2.Axes.Bottom.CalcPosPoint(e.X));
                }
            }
            Zooming = false;
        }

        void tChart1_MouseMove(object sender, MouseEventArgs e)
        {
            if (Zooming)
            {
                MouseActX = e.X;
                MouseActY = e.Y;
                tChart1.Invalidate();
            }
        }

        void tChart1_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)
        {
            if (Zooming)
            {
                tChart1.Graphics3D.Pen.Style = System.Drawing.Drawing2D.DashStyle.Dash;
                tChart1.Graphics3D.BackColor = Color.Empty;
                tChart1.Graphics3D.Rectangle(MouseDownX, MouseDownY, MouseActX, MouseActY);
            }
        } 

        void tChart2_MouseMove(object sender, MouseEventArgs e)
        {
            if (Zooming)
            {
                MouseActX = e.X;
                MouseActY = e.Y;
                tChart2.Invalidate();
            }
        }

        void tChart2_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)
        {
            if (Zooming)
            {
                tChart2.Graphics3D.Pen.Style = System.Drawing.Drawing2D.DashStyle.Dash;
                tChart2.Graphics3D.BackColor = Color.Empty;
                tChart2.Graphics3D.Rectangle(MouseDownX, MouseDownY, MouseActX, MouseActY);
            }
        }
Best Regards,
ImageYeray Alonso
Development & Support
Steema Software
Av. Montilivi 33, 17003 Girona, Catalonia (SP)
Image Image Image Image Image Image Please read our Bug Fixing Policy

Amol
Advanced
Posts: 176
Joined: Mon May 29, 2006 12:00 am

Re: Problem with zooming in two tee chart

Post by Amol » Sat Oct 03, 2009 6:58 am

Hi Yeray ,

thanks for ur reply.
Now, my problem is solved.

Gautam

Post Reply