Zoom in Teechart for .Net

TeeChart for Microsoft Visual Studio .NET, Xamarin Studio (Android, iOS & Forms) & Monodevelop.
Post Reply
Intel
Newbie
Newbie
Posts: 9
Joined: Tue Aug 16, 2005 4:00 am

Zoom in Teechart for .Net

Post by Intel » Mon Jul 17, 2006 10:19 pm

Hi,

I'm a newbie to using TeeChart, but I am having difficulty getting the zoom capability to work at all. I stepped through the Tutorial "Walkthrough ASP.Net examples" but I get stuck every time I try to implement the zoom. An exception is thrown every time in the CheckZoom function

private void CheckZoom(WebChart wChart)
{
ArrayList zoomedState=(ArrayList)Session[wChart.ID+"Zoomed"];
zoomedState=((Steema.TeeChart.Tools.ZoomTool)wChart.Chart.Tools[0]).SetCurrentZoom(Request,zoomedState);

if (zoomedState==null)
Session.Remove(wChart.ID+"Zoomed");
else
Session.Add(wChart.ID+"Zoomed",zoomedState);
}

in particular the exception happens in the SetCurrentZoom call. I get this

System.ArgumentException was unhandled by user code
Message="Parameter is not valid."
Source="System.Drawing"
StackTrace:
at System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format)
at System.Drawing.Bitmap..ctor(Int32 width, Int32 height)
at Steema.TeeChart.Chart.Bitmap(Int32 width, Int32 height, PixelFormat pixelformat)
at Steema.TeeChart.Chart.Bitmap(Int32 width, Int32 height)
at Steema.TeeChart.Chart.Bitmap()
at Steema.TeeChart.Tools.ZoomTool.Zoom(Rectangle r)
at Steema.TeeChart.Tools.ZoomTool.DoZoom(ArrayList zoomState)
at Steema.TeeChart.Tools.ZoomTool.SetCurrentZoom(HttpRequest r, ArrayList zoomState)
at _Default.CheckZoom(WebChart wchart) in c:\AtlasWebSite2\Default.aspx.cs:line 40
at _Default.Page_Load(Object sender, EventArgs e) in c:\AtlasWebSite2\Default.aspx.cs:line 32
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

if I try to zoom anything.

What am I missing here?

FYI: I am using VS 2005.

Regards,

Layne

Narcís
Site Admin
Site Admin
Posts: 14730
Joined: Mon Jun 09, 2003 4:00 am
Location: Banyoles, Catalonia
Contact:

Post by Narcís » Tue Jul 18, 2006 9:10 am

Hi Layne,

The code you posted is fine, is identic to the one in the ASP.NET demo. Could you please send us ane example we can run "as-is" to reproduce the issue here?

You can post your files at news://www.steema.net/steema.public.attachments newsgroup.
Best Regards,
Narcís Calvet / 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

Intel
Newbie
Newbie
Posts: 9
Joined: Tue Aug 16, 2005 4:00 am

Unable to get to that newsgroup

Post by Intel » Tue Jul 18, 2006 3:22 pm

Hi,

I am unable to get to that newsgroup you linked to. We have proxies and are blocked from direct contact here, so my newsreader can't get in.

Is there another way to send you the files? I just redid the project again this morning, with the same results. I can reproduce this exception on whim.

A little more evidence for you. The exception only appears to throw itself if you are marking a zoom area from the upper left to the lower right.

Regards,

~layne

Intel
Newbie
Newbie
Posts: 9
Joined: Tue Aug 16, 2005 4:00 am

Post by Intel » Tue Jul 18, 2006 6:41 pm

Narcis,

I tried an alternate path to upload those files. Even from home I can't upload them. When I try from there, it says the message is too big, though it is a 3 line response with an attachment of 4 files, approximately 1k each, zipped into a package. Size shouldn't be an issue.

Any ideas?

~layne

Narcís
Site Admin
Site Admin
Posts: 14730
Joined: Mon Jun 09, 2003 4:00 am
Location: Banyoles, Catalonia
Contact:

Post by Narcís » Wed Jul 19, 2006 10:49 am

Hi Layne,

Thanks for the files, I could reproduce the problem here and modified your files so that it works fine. It needs like the code below. I'm also posting the file in the attachments newsgroup.

Code: Select all

	private void Page_Load(object sender, System.EventArgs e)
	{
		//Let's work with the Chart object for convenience
		Steema.TeeChart.Chart Chart1 = WebChart1.Chart;
    MemoryStream tmpChart = new MemoryStream();

    //Add a ZoomTool to the Chart
    Steema.TeeChart.Tools.ZoomTool zoomTool1 = new Steema.TeeChart.Tools.ZoomTool(Chart1);

    //Add a SeriesToolTip to the Chart
    Steema.TeeChart.Tools.SeriesHotspot seriesHotSpot1 = new Steema.TeeChart.Tools.SeriesHotspot(Chart1);
    //Steema.TeeChart.Styles.MapAction.Mark is the default value
    seriesHotSpot1.MapAction = Steema.TeeChart.Styles.MapAction.Mark;

    if (Session["ch1"] == null)
    {
		  //Add in a series and fill it
		  Chart1.Aspect.View3D = false;
      if (Chart1.Series.Count < 1)
      {
		    Steema.TeeChart.Styles.Bubble bubble1 = new Steema.TeeChart.Styles.Bubble(Chart1);
      }
      Chart1.Series[0].FillSampleValues();

      //export Chart to a MemoryStream template
      Chart1.Export.Template.Save(tmpChart);
      //save template to a Session variable
      Session.Add("ch1", tmpChart);

    }
    else
    {
      //retrieve the session stored Chart
      tmpChart = (MemoryStream)Session["ch1"];
      //set the Stream position to 0 as the last read/write
      //will have moved the position to the end of the stream
      tmpChart.Position = 0;
      //import saved Chart
      WebChart1.Chart.Import.Template.Load(tmpChart);

      //check whether zoom request is being sent
      CheckZoom(WebChart1);
    }

	}
	
	private void CheckZoom(WebChart wChart)
	{ 
		ArrayList zoomedState=(ArrayList)Session[wChart.ID+"Zoomed"];
		zoomedState=((Steema.TeeChart.Tools.ZoomTool)wChart.Chart.Tools[0]).SetCurrentZoom(Request,zoomedState);
		if (zoomedState==null)
			Session.Remove(wChart.ID+"Zoomed");
		else
			Session.Add(wChart.ID+"Zoomed",zoomedState);    
	} 
Best Regards,
Narcís Calvet / 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

Intel
Newbie
Newbie
Posts: 9
Joined: Tue Aug 16, 2005 4:00 am

Post by Intel » Wed Jul 19, 2006 4:49 pm

Hi Narcis,

This didn't work for me. I still can't access this newsgroup from within my work environment, so I can't download your edits to my files. However, I C&P'd the code you posted here into my play project. It is still throwing the same exception (Parameter is not valid) for that SetCurrentZoom call in the CheckZoom method when I try to set the zoom area from upper left to lower right.

Did you do edits to the other files as well? I'll try pulling them down this evening when I get home, but in the meanwhile, for your perusal I have C&P'd my default.aspx.cs file here for you.

Regards,

Layne

using System;
using System.Data;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Steema.TeeChart.Web;

public partial class _Default : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
//Let's work with the Chart object for convenience
Steema.TeeChart.Chart Chart1 = WebChart1.Chart;
MemoryStream tmpChart = new MemoryStream();

//Add a ZoomTool to the Chart
Steema.TeeChart.Tools.ZoomTool zoomTool1 = new Steema.TeeChart.Tools.ZoomTool( Chart1 );

//Add a SeriesToolTip to the Chart
Steema.TeeChart.Tools.SeriesHotspot seriesHotSpot1 = new Steema.TeeChart.Tools.SeriesHotspot( Chart1 );
//Steema.TeeChart.Styles.MapAction.Mark is the default value
seriesHotSpot1.MapAction = Steema.TeeChart.Styles.MapAction.Mark;

if ( Session[ "ch1" ] == null )
{
//Add in a series and fill it
Chart1.Aspect.View3D = false;
if ( Chart1.Series.Count < 1 )
{
Steema.TeeChart.Styles.Bubble bubble1 = new Steema.TeeChart.Styles.Bubble( Chart1 );
}
Chart1.Series[ 0 ].FillSampleValues();

//export Chart to a MemoryStream template
Chart1.Export.Template.Save( tmpChart );
//save template to a Session variable
Session.Add( "ch1", tmpChart );

}
else
{
//retrieve the session stored Chart
tmpChart = (MemoryStream)Session[ "ch1" ];
//set the Stream position to 0 as the last read/write
//will have moved the position to the end of the stream
tmpChart.Position = 0;
//import saved Chart
WebChart1.Chart.Import.Template.Load( tmpChart );

//check whether zoom request is being sent
CheckZoom( WebChart1 );
}

}

private void CheckZoom( WebChart wChart )
{
ArrayList zoomedState=(ArrayList)Session[ wChart.ID+"Zoomed" ];
zoomedState=( (Steema.TeeChart.Tools.ZoomTool)wChart.Chart.Tools[ 0 ] ).SetCurrentZoom( Request, zoomedState );
if ( zoomedState==null )
Session.Remove( wChart.ID + "Zoomed" );
else
Session.Add( wChart.ID + "Zoomed", zoomedState );
}
}

Narcís
Site Admin
Site Admin
Posts: 14730
Joined: Mon Jun 09, 2003 4:00 am
Location: Banyoles, Catalonia
Contact:

Post by Narcís » Thu Jul 20, 2006 7:46 am

Hi Layne,

No, I just edited Default.aspx.cs as I wrote here. Which TeeChart for .NET v2 built are you using?

Thanks in advance.
Best Regards,
Narcís Calvet / 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

Intel
Newbie
Newbie
Posts: 9
Joined: Tue Aug 16, 2005 4:00 am

Post by Intel » Thu Jul 20, 2006 4:38 pm

Hi,

According to the about Steema.Teechart..., I am on version 2.0.2306.26232

~layne

Intel
Newbie
Newbie
Posts: 9
Joined: Tue Aug 16, 2005 4:00 am

Post by Intel » Thu Jul 20, 2006 4:46 pm

Narcis,

I just tried your code from the attachments newsgroup and it zoomed for me. For the life of me though, I don't know why yours would work and mine wouldn't, since mine was just a copy and paste of what you had here.

Thanks...though, I daresay I will be contacting you again. :(

~layne

Intel
Newbie
Newbie
Posts: 9
Joined: Tue Aug 16, 2005 4:00 am

Post by Intel » Thu Jul 20, 2006 5:40 pm

Ok, one more piece of evidence...

For some reason, the size of the control seems important. I noticed in your default.aspx file that you set the size of the control to 300px X 400px, which mine was lacking (I hadn't set sizes at all). When I set the size, it started working.

No knowing why...

~layne

Post Reply