Drawing ColorBand tool

TeeChart for Microsoft Visual Studio .NET, Xamarin Studio (Android, iOS & Forms) & Monodevelop.
Post Reply
Avijit
Newbie
Newbie
Posts: 72
Joined: Tue Sep 15, 2009 12:00 am

Drawing ColorBand tool

Post by Avijit » Mon Dec 21, 2009 8:42 am

Hi All,
My TChart control is hosted on top of a Panel. That Panel is docked.Fill but the TChart control is Anchored to Left, Top and right.
I have 100 fastline data series and each are having its own custom axis.
At any time i am showing only 5 custom axises.
The size of the custom axises are calculated as below -
int CustomAxisSize = Panel.Height/5;
//1st Custom Axis
CustomAxis.IStartPos = 0;
CustomAxis.IEndPos = CustomAxisSize;

//2nd Custom Axis
CustomAxis.IStartPos = CustomAxisSize;
CustomAxis.IEndPos = CustomAxisSize * 2;

--
--
--

Now, a big area of the TChart control is in the Panel scrollable region.
Thats is absolutely fine.

What i wanted to do is -
Draw a ColorBand tool and associate that ColorBand tool with the Vertical custom axises with alternative colors (for example Gray and white). So that User can identify the different custom axises clearly. It is similar to the GridBand tool. I dont know whether i should use GridBand or not as TChart controls grid line property is set to not visible in my application.
Please suggest how can i achieve that.

Regards,
Avijit

Avijit
Newbie
Newbie
Posts: 72
Joined: Tue Sep 15, 2009 12:00 am

Re: Drawing ColorBand tool

Post by Avijit » Mon Dec 21, 2009 8:53 pm

Solved the problem using rectagle tool

Regards,
Avijit

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

Re: Drawing ColorBand tool

Post by Yeray » Tue Dec 22, 2009 8:45 am

Hi Avijit,

Yes, rectangle tool would be a solution. Here you have an example of another one, using ColorBand tools:

Code: Select all

        public Form1()
        {
            InitializeComponent();
            InitializeChart();
        }

        private void InitializeChart()
        {
            tChart1.Aspect.View3D = false;
            tChart1.Axes.Bottom.Grid.Visible = false;
            tChart1.Panel.MarginLeft = 7;

            int nSeries = 5;

            for (int i = 0; i < nSeries; i++)
            {
                new Steema.TeeChart.Styles.FastLine(tChart1.Chart);
                tChart1[i].FillSampleValues();
                
                tChart1.Axes.Custom.Add(new Steema.TeeChart.Axis());
                tChart1[i].CustomVertAxis = tChart1.Axes.Custom[i];
                tChart1.Axes.Custom[i].StartPosition = (100 / nSeries) * i;
                tChart1.Axes.Custom[i].EndPosition = (100 / nSeries) * (i + 1);
                tChart1.Axes.Custom[i].AxisPen.Color = tChart1[i].Color;
                tChart1.Axes.Custom[i].Grid.Visible = false;

                Steema.TeeChart.Tools.ColorBand tmpColorBand = new Steema.TeeChart.Tools.ColorBand(tChart1.Chart);
                tmpColorBand.Axis = tChart1.Axes.Custom[i];
                tmpColorBand.Color = tChart1[i].Color;
                tmpColorBand.Transparency = 80;
                tmpColorBand.Pen.Visible = false;
            }

            tChart1.AfterDraw += new Steema.TeeChart.PaintChartEventHandler(tChart1_AfterDraw);

            tChart1.Draw();
        }

        void tChart1_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)
        {
            for (int i = 0; i < tChart1.Tools.Count; i++)
            {
                if (tChart1.Tools[i] is Steema.TeeChart.Tools.ColorBand)
                {
                    Steema.TeeChart.Tools.ColorBand tmpColorBand = tChart1.Tools[i] as Steema.TeeChart.Tools.ColorBand;
                    tmpColorBand.Start = tChart1.Axes.Custom[i].Maximum;
                    tmpColorBand.End = tChart1.Axes.Custom[i].Minimum;
                }
            }
        }   
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

Avijit
Newbie
Newbie
Posts: 72
Joined: Tue Sep 15, 2009 12:00 am

Re: Drawing ColorBand tool

Post by Avijit » Tue Apr 13, 2010 12:40 pm

Hi Yerey,
I tried your code to use ColorBand tool instead of rectangle tool.
I am able to draw the color band tool but one problem i am facing is -

All my custom axises are having .1% of Minimum and Maximum offset (in Pixels).
Thats why i think the Color band tools height is also getting little reduced.
Please let me know how can i make it in such a way so that the height of the color band dont get reduced.

Regards,
Avijit

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

Re: Drawing ColorBand tool

Post by Yeray » Tue Apr 13, 2010 2:40 pm

Hi Avijit,

I've added 10 pixels of offset in the custom axes of the example above and I think I've seen what you mean.
I've solved it changing the code at OnAfterDraw event so that the ColorBands include the offset too:

Code: Select all

        private void InitializeChart()
        {
            tChart1.Aspect.View3D = false;
            tChart1.Axes.Bottom.Grid.Visible = false;
            tChart1.Panel.MarginLeft = 7;

            int nSeries = 5;

            for (int i = 0; i < nSeries; i++)
            {
                new Steema.TeeChart.Styles.FastLine(tChart1.Chart);
                tChart1[i].FillSampleValues();

                tChart1.Axes.Custom.Add(new Steema.TeeChart.Axis());
                tChart1[i].CustomVertAxis = tChart1.Axes.Custom[i];
                tChart1.Axes.Custom[i].StartPosition = (100 / nSeries) * i;
                tChart1.Axes.Custom[i].EndPosition = (100 / nSeries) * (i + 1);
                tChart1.Axes.Custom[i].AxisPen.Color = tChart1[i].Color;
                tChart1.Axes.Custom[i].Grid.Visible = false;
                tChart1.Axes.Custom[i].MinimumOffset = 10;
                tChart1.Axes.Custom[i].MaximumOffset = 10;

                Steema.TeeChart.Tools.ColorBand tmpColorBand = new Steema.TeeChart.Tools.ColorBand(tChart1.Chart);
                tmpColorBand.Axis = tChart1.Axes.Custom[i];
                tmpColorBand.Color = tChart1[i].Color;
                tmpColorBand.Transparency = 80;
                tmpColorBand.Pen.Visible = false;
            }

            tChart1.AfterDraw += new Steema.TeeChart.PaintChartEventHandler(tChart1_AfterDraw);
            tChart1.Draw();
        }

        void tChart1_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)
        {
            for (int i = 0; i < tChart1.Tools.Count; i++)
            {
                if (tChart1.Tools[i] is Steema.TeeChart.Tools.ColorBand)
                {
                    Steema.TeeChart.Tools.ColorBand tmpColorBand = tChart1.Tools[i] as Steema.TeeChart.Tools.ColorBand;
                    tmpColorBand.Start = tChart1.Axes.Custom[i].Maximum + (tChart1.Axes.Custom[i].CalcPosPoint(0) - tChart1.Axes.Custom[i].CalcPosPoint(tChart1.Axes.Custom[i].MaximumOffset));
                    tmpColorBand.End = tChart1.Axes.Custom[i].Minimum - (tChart1.Axes.Custom[i].CalcPosPoint(0) - tChart1.Axes.Custom[i].CalcPosPoint(tChart1.Axes.Custom[i].MinimumOffset));
                }
            }
        }   
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

Avijit
Newbie
Newbie
Posts: 72
Joined: Tue Sep 15, 2009 12:00 am

Re: Drawing ColorBand tool

Post by Avijit » Fri Apr 16, 2010 10:05 am

Hi Yerey,
Your solution worked for me but i found another problem.
Out of 100 fastline series, for 50 series the high and low value are same. Means there is not data change.
In that scenario, the colorband tool is not getting drawn.
Is it a limitation in the color band tool? or i am doing something wrong?
Please let me how to solve this problem.

I am not able to use the rectangle tool because rectangle tool dont accept left, top, width and hight as float values.

Regards,
Avijit

Avijit
Newbie
Newbie
Posts: 72
Joined: Tue Sep 15, 2009 12:00 am

Re: Drawing ColorBand tool

Post by Avijit » Fri Apr 16, 2010 10:36 am

Yerey, Please see the images below. For the first image - ColorBandTools are drawn perfectly and alligned with the grid lines (this is very critical to be allingned with the grid line). In the second image you can see, for the series that dont have ny change in data, ColorBandTool is not drawn.
Imgae 1 :
ProperWithColorBandTool.JPG
Proper wiht ColorBand Tool
ProperWithColorBandTool.JPG (95.46 KiB) Viewed 11212 times
Image 2 :
NotProperWithColorBandTool.JPG
Not Proper wiht ColorBand Tool
NotProperWithColorBandTool.JPG (67.91 KiB) Viewed 11213 times
Regards,
Avijit

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

Re: Drawing ColorBand tool

Post by Yeray » Thu Apr 22, 2010 12:02 pm

Hi Avijit,

Excuse us for the delayed reply.

I've incremented the number of series in the example I suggested above and, when the chart is too little to show to many series one below the other, the series are drawn like an horizontal line. But I'm still not sure that this is what you are experiencing. So, if that's not the same, could you please send us a simple example project we can run as-is to reproduce the problem here?
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

Post Reply