Page 1 of 1

Flickering ChartListBox

Posted: Thu Jul 22, 2004 3:12 pm
by 8126230
HI,

I am using a 2D Line chart and updating it in real-time by adding points on the end of several series (12 to be exact). I could not figure out how to get a vertical scrollbar into a legend, so I used the ChartListBox and associated it with the chart control. This works as desired, but there is constant flickering in the listbox and I am assuming that the action of adding points is casuing this. Any suggestions on how to fix this problem? I have tried setting the ControlStyle of the parent form to double buffering, etc. but that did not help my situation.

Thanks,
Jim

Posted: Thu Jul 22, 2004 11:55 pm
by Pep
Hi Jim,
flickering in the listbox and I am assuming that the action of adding points is casuing this. Any suggestions on how to fix this problem? I have tried setting the ControlStyle of the parent form to
I cannot reproduce the problem here (I don't see the fickering) using the latest release available on our web site and the following code :

Code: Select all

private void Form1_Load(object sender, System.EventArgs e)
{
for (int i=0;i<13;i++)
{
tChart1.Series.Add (new Steema.TeeChart.Styles.Line());
tChart1.Series[i].FillSampleValues(10);
tChart1.Legend.Visible = false;
chartListBox1.Chart = tChart1;
}

private void timer1_Tick(object sender, System.EventArgs e)
{
Random a = new Random();
for (int i=0;i<13;i++)
{
tChart1.Series[i].Add(a.Next(10));
}
}
Could you please post the code you're using here so I can see if it can be solved ?

Posted: Fri Jul 23, 2004 2:56 pm
by 8126230
Hi Pep,

I zipped up a project and uploaded it to steema.pulic.attachments that demonstrates the flicker of the chartlistbox.

Jim

Posted: Fri Jul 23, 2004 6:56 pm
by 8126230
I figured it out. The flickering is a result of the way I have bundled the chart and chart list box into a class to contain them. The theory is that when the chart updates its axes, it causes a repaint for the whole class, thus making the chart list box flicker. I have tried a few ways to resolve the flickering but have been unsuccessful so far.

Jim

Posted: Fri Jul 23, 2004 9:40 pm
by 8126230
More info for you. The easiest way to see this problem is create a form, then put a panel in the form. Put a TChart into the panel and then put a ChartListBox into the same panel. Adding points onto the graph at any interval will make the ChartListBox flicker.

Jim

Posted: Tue Jul 27, 2004 12:18 pm
by Chris
Hi Jim,
More info for you. The easiest way to see this problem is create a form, then put a panel in the form. Put a TChart into the panel and then put a ChartListBox into the same panel. Adding points onto the graph at any interval will make the ChartListBox flicker.
I followed your instructions adding a button onto the panel with the following code:

Code: Select all

private void button1_Click(object sender, System.EventArgs e) {
	tChart1.Series.Add(new Steema.TeeChart.Styles.Line());
	tChart1.Series[tChart1.Series.Count - 1].FillSampleValues();
}
I'm afraid I can't see any flickering when clicking the button.

Posted: Tue Jul 27, 2004 2:32 pm
by 8126230
Hi Chris,

I provided a sample in the public.attachments newsgroup that shows the chartlistbox flickering.

I did not mention a button flickering problem so I am a little confussed as to what you are refering to in your reply.

Posted: Tue Jul 27, 2004 3:25 pm
by Chris
Hi Jim,

Try commenting out the line:
currentLine.fastLine.Color = graphColor;

in the AddPoint() method of your EquationGraph.

This property only needs to be set once, not each time you add a point in.

Posted: Tue Jul 27, 2004 6:53 pm
by 8126230
Hi Chris,

I have corrected that problem (setting the color each time) since I sent the sample to you and it still does not solve the flickering problem.

Thanks,
Jim

Posted: Wed Jul 28, 2004 10:56 am
by Chris
Hi Jim,
I have corrected that problem (setting the color each time) since I sent the sample to you and it still does not solve the flickering problem.
It does here. These are the steps I followed (all using TeeChart for .NET v1.1.1644.16795, the latest publicly available version):
1. Download TestGraphFlickerApp.zip from the message on news://www.berneda.com/steema.public.attachments with the subject "Flicker Chartlistbox example for Pep Take 3".
2. Run the project "as-is" - the ChartListBox flickering can clearly be seen.
3. Comment out the line currentLine.fastLine.Color = graphColor; - the ChartListBox flickering can clearly not be seen.

Can you reproduce this behaviour at your end using the same TeeChart for .NET version?

If you are still experiencing problems, please upload a fresh project I can run "as-is" to:
news://www.berneda.com/steema.public.attachments

Many thanks!

Posted: Wed Jul 28, 2004 4:08 pm
by 8126230
Hi Chris,

Thanks. With that clue I figured it out in my main application and all is working. The only remaining issue that would be nice to have fixed but is not critical is that when I initially set the color of the lines, the chartlistbox flickers as a result of this change. So basically, if I have 12 series, it flickers 12 times then is displayed normally.

Does the chartlistbox component have double buffering enabled ? For example:

Code: Select all

this.SetStyle( ControlStyles.DoubleBuffer |
               ControlStyles.ResizeRedraw |
               ControlStyles.AllPaintingInWmPaint | 
               ControlStyles.UserPaint, true);
this.UpdateStyles();
Thanks,
Jim

Posted: Fri Jul 30, 2004 9:39 am
by Chris
Hi Jim,
Does the chartlistbox component have double buffering enabled ?
No, it doesn't. The ChartListBox inherits from the standard System.Windows.Forms.ListBox whose default setting for double buffering is false.

Can you not set AutoRepaint to false to avoid this problem?

Posted: Fri Jul 30, 2004 2:47 pm
by 8126230
Hi Chris,

I am a little confussed at your reply. The Chart Listbox does not have a publicly accessible property of AutoRepaint. The TeeChart does have this property and setting it to false has no effect on the flickering problem of the Chart Listbox.

The only reason I asked about double-buffering is that the flickering is a well documented problem with listbox controls and derived controls.
See:
http://msdn.microsoft.com/library/defau ... lsamp4.asp
Since you have a custom control ChartListBox you could add double-buffering easily.

I tried the other available method of using the Chart Listbox BeginUpdate/EndUpdate pair of methods and did not see any difference in the flickering.

Thanks,
Jim