Zoom in Teechart for .Net
Zoom in Teechart for .Net
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
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
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
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.
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 |
Instructions - How to post in this forum |
Unable to get to that newsgroup
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
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
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
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
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
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.
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 |
Instructions - How to post in this forum |
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 );
}
}
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 );
}
}
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
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.
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 |
Instructions - How to post in this forum |
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
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