Questions on chart area related to a custom Y-axis

TeeChart for Microsoft Visual Studio .NET, Xamarin Studio (Android, iOS & Forms) & Monodevelop.
Post Reply
asupriya
Advanced
Posts: 179
Joined: Mon Dec 01, 2008 12:00 am

Questions on chart area related to a custom Y-axis

Post by asupriya » Thu Apr 29, 2010 5:57 am

1. How can I highlight the chart area border of a custom vertical axis as shown in the attached image at runtime?
2. Is there a way to put buttons similar to form ControlBox buttons (also shown in the attached image at the top right corner for each of the custom vertical axis) and have these buttons trigger events (similar behavior to the controlbox, but is somewhat customized). Please note that these Charts and all related buttons are created and placed at runtime.
Attachments
tchart.png
tchart.png (19.97 KiB) Viewed 5262 times

Sandra
Site Admin
Site Admin
Posts: 3132
Joined: Fri Nov 07, 2008 12:00 am

Re: Questions on chart area related to a custom Y-axis

Post by Sandra » Fri Apr 30, 2010 10:05 am

Hello asupriya,
1. How can I highlight the chart area border of a custom vertical axis as shown in the attached image at runtime?
I have made a simple project that I think its behaviour is as you want. Please, see next code, and check if works as you want.

Code: Select all

 private Steema.TeeChart.Styles.FastLine[] fs = new Steema.TeeChart.Styles.FastLine[7];
        private Steema.TeeChart.Axis[] myAxis = new Steema.TeeChart.Axis[7];
        private Steema.TeeChart.ChartController tChartController1;
        bool drawrectangle;
        private int X0, Y0, X1, Y1;
        private void InitializeChart()
        {

          // this.WindowState = FormWindowState.Normal;
           
            this.AutoScroll = true;
            //Chart object
            tChartController1 = new Steema.TeeChart.ChartController();
            tChart1.AllowDrop = true;
            tChart1.Aspect.View3D = false;
            tChart1.Dock = DockStyle.Top;
            tChart1.Aspect.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            tChart1.Aspect.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
            tChartController1.Chart = tChart1;

            //Now cursor tool
           
            tChart1.Panel.MarginLeft = 30;

            //Now fast lines
            for (int i = 0; i <= 6; i++)
            {
                //fastlines
                fs[i] = new Steema.TeeChart.Styles.FastLine(tChart1.Chart);
                fs[i].FillSampleValues(1800);
                fs[i].DrawAllPoints = false;
                //axis
                if (i == 0)
                {
                    myAxis[i]= new Steema.TeeChart.Axis(tChart1.Chart);
                    myAxis[i].StartEndPositionUnits = Steema.TeeChart.PositionUnits.Pixels;
                     myAxis[i].StartPosition = 0;
                     myAxis[i].EndPosition = 55;
                     myAxis[i].Title.Text = "Axis_" + i;
                     myAxis[i].Title.TextAlign = StringAlignment.Near;
                     myAxis[i].Automatic = true;
                    fs[i].CustomVertAxis =  myAxis[i];
                    tChart1.Axes.Custom.Add( myAxis[i]);
                }
                else
                {
                     myAxis[i] = new Steema.TeeChart.Axis(tChart1.Chart);
                     myAxis[i].Title.Text = "Axis_" + i;
                     myAxis[i].Title.TextAlign = StringAlignment.Near;
                     myAxis[i].Automatic = true;
                     myAxis[i].StartEndPositionUnits = Steema.TeeChart.PositionUnits.Pixels;
                    tChart1.Axes.Custom.Add( myAxis[i]);
                     myAxis[i].StartPosition = myAxis[i - 1].EndPosition + 5;
                     myAxis[i].EndPosition =  myAxis[i].StartPosition + 50;
                    fs[i].CustomVertAxis =  myAxis[i];
                }
            }
            this.Controls.Add(tChartController1);
            tChart1.MouseUp += new MouseEventHandler(tChart1_MouseUp);
            tChart1.AfterDraw += new Steema.TeeChart.PaintChartEventHandler(tChart1_AfterDraw);
            tChart1.Draw();

        }
    void  tChart1_MouseUp(object sender, MouseEventArgs e)
    {
 	    Steema.TeeChart.TChart tmpChart = (Steema.TeeChart.TChart)sender;
        Steema.TeeChart.Axis dragDropAxis;
         Rectangle rect = tChart1.Chart.ChartRect;
          //int tmp = this.AutoScrollPosition.Y;
              for (int i = 0; i < tmpChart.Axes.Custom.Count; i++)
              {
                  dragDropAxis = tmpChart.Axes.Custom[i];
                  if (!dragDropAxis.Horizontal &&((dragDropAxis.IStartPos <= e.Y) && (dragDropAxis.IEndPos >= e.Y)))
                  {
                      drawrectangle = true;
                      Y0 = dragDropAxis.CalcYPosValue(dragDropAxis.Minimum);
                      Y1 = dragDropAxis.CalcYPosValue(dragDropAxis.Maximum);
                      X1 = rect.Right;
                      X0 = rect.Left;
                  }
              }
              tChart1.Refresh();
      }
        void tChart1_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)
        {
            if ((X0 != -1) && (Y0 != -1))
            {
                if (drawrectangle)
                {
                    g.Brush.Visible = false;
                    g.Pen.Color = Color.Red;
                    g.Pen.Width = 3;
                    g.Rectangle(X0, Y0, X1, Y1);
                }
            }
            else
            {
                ResetCoords();
            }
        }
        private void ResetCoords()
        {
            X0 = -1;
            Y0 = -1;
            Y1 = -1;
            X1 = -1;
        }
2. Is there a way to put buttons similar to form ControlBox buttons (also shown in the attached image at the top right corner for each of the custom vertical axis) and have these buttons trigger events (similar behavior to the controlbox, but is somewhat customized). Please note that these Charts and all related buttons are created and placed at runtime.
You need to add those buttons to a TChart instead of a Form. The chart being button's parent shouldn't affect their functionality. Regarding button's positioning, you already know regions positions and dimensions due to axes positioning.
Best Regards,
Sandra Pazos / Development & Support
Steema Software
Avinguda Montilivi 33, 17003 Girona, Catalonia
Tel: 34 972 218 797
http://www.steema.com
Image Image Image Image Image Image
Instructions - How to post in this forum

asupriya
Advanced
Posts: 179
Joined: Mon Dec 01, 2008 12:00 am

Re: Questions on chart area related to a custom Y-axis

Post by asupriya » Thu May 13, 2010 5:39 am

Just tried your example and it worked perfectly. Thanks Sandra.

Post Reply