Nevron Forum

Chart 2009.1 not fully functional under Windows 7

https://www.nevron.com/Forum/Topic7343.aspx

By Michael Ody - Monday, January 21, 2013

I am maintaining a VS2008 C# WinForms app which uses Nevron Chart 2009.1 (v9.7.1.12). I've received a new dev machine running Win7 32-bit; previously I was using XP. After reinstalling all my dev tools I have noticed that the chart control is not fully functional when the app is recompiled under Win7. All was well under XP and no code mods have been made. I suspect it may be something to do with licensing and/or Win7 user permissions, as I found I had to run the License Key Manager as administrator in order to install my license key (otherwise I got an exception when I hit Save).

At runtime, the chart is rendered and my data is plotted OK but when the app tries to change the chart's BoundsMode or Projection property in response to a button click, nothing happens. In particular, it does not change to a 3D view when the projection is set to PerspectiveTilted. I can step through the code in the debugger and no exception is generated. It's as if the code has simply not been executed. Running VS and/or the app as administrator makes no difference.

I can't find anything in the KB about Win7-specific issues.

What am I missing?
By Nevron Support - Monday, January 21, 2013

Hi Michael,

In general even older versions of the control are compatible with 64bit versions of Windows - the only exception is the license key manager which does not read/write in the

HKEY_LOCAL_MACHINE\Software\WOW6432Node

registry node as it should, which requires you to apply the license key by code.

Regarding:

"At runtime, the chart is rendered and my data is plotted OK but when the app tries to change the chart's BoundsMode or Projection property in response to a button click, nothing happens. In particular, it does not change to a 3D view when the projection is set to PerspectiveTilted. I can step through the code in the debugger and no exception is generated. It's as if the code has simply not been executed. Running VS and/or the app as administrator makes no difference."

Do you call the control refresh method after you make changes to the control:

nChartControl1.Refresh();

Let us know if you meet any problems or have any questions.

By Michael Ody - Tuesday, January 22, 2013

Yes, I'm definitely calling .Refresh() on the control. The app subclasses NChartControl to add custom functionality for representing a 2D or 3D seismogram plot. Here is the routine that changes the view to one of four choices, and Refresh() is called on the last line:

private void ChangeView()
{
switch ( _view )
{
case SeismogramView.VerticalRadial:
_chart.BoundsMode = BoundsMode.Fit;
_chart.Projection.SetPredefinedProjection(PredefinedProjection.Orthogonal);
DisableTrackball();
break;

case SeismogramView.VerticalTransverse:
_chart.BoundsMode = BoundsMode.Fit;
_chart.Projection.SetPredefinedProjection(PredefinedProjection.Orthogonal);
_chart.Projection.Rotation = -90;
DisableTrackball();
break;

case SeismogramView.TransverseRadial:
_chart.BoundsMode = BoundsMode.Fit;
_chart.Projection.SetPredefinedProjection(PredefinedProjection.OrthogonalTop);
DisableTrackball();
break;

case SeismogramView.Perspective:
default:
_chart.BoundsMode = BoundsMode.None;
_chart.Projection.SetPredefinedProjection(PredefinedProjection.PerspectiveTilted);
EnableTrackball();
break;
}

this.Refresh();
}

This code has worked fine for years and hasn't been modified in any way. All I've done is recompile it on a new computer (32-bit Windows 7 Enterprise SP1, VS2008 Professional SP1).

I have also compiled the code under 32-bit Windows XP SP3 and 64-bit Windows 7 Ultimate and the chart's runtime functionality is correct in both those cases. The problem only occurs when the app is compiled on my 32-bit Win7 Enterprise laptop. Very odd indeed.
By Nevron Support - Tuesday, January 22, 2013

Hi Michael,

Very odd indeed - most likely this is caused by the laptop hardware drivers because it is very unlikely that there is a Windows incompatibility in the control (as its used on a large number of computers with different versions of Windows). Do you use 3D hardware acceleration in the application - if so can you test what happens if you disable it:

nChartControl1.Settings.RenderSurface = Nevron.GraphicsCore.RenderSurface.Bitmap;

Let us know if the problem persists...

By Michael Ody - Wednesday, January 23, 2013

I don't believe the app uses hardware acceleration. At least, the RenderSurface property is not being set anywhere, which means it defaults to Bitmap.

Other info:
The RenderDevice property is set to OpenGL.
Laptop is a Dell Precision M4700 with NVidia Quadro K2000M graphics card.
By Michael Ody - Wednesday, January 23, 2013

Fixed! I installed the Q2 2008 version 8.10.15.12 side by side with 2009.1 (using the same license key), referenced the 2008 dlls instead, and recompiled. The chart now works correctly. If I switch back to 2009.1 and recompile, it stops working again.

So it's due to a change between these two versions. I'll understand if you decide not to investigate a bug in a 4-year-old version of one of your products.

Anyway, my problem is solved (well, worked around) for the time being.