Setting margins ....

TeeChart for Microsoft Visual Studio .NET, Xamarin Studio (Android, iOS & Forms) & Monodevelop.
Post Reply
Janne
Newbie
Newbie
Posts: 22
Joined: Wed Dec 31, 2008 12:00 am

Setting margins ....

Post by Janne » Sat Jan 07, 2012 1:51 pm

Hi all,
I am trying to adjust the size of margins of a webchart with several different series in it, in order to create space for some other stuff, like footers and the like. I want the footer to be proportional to the chart, and have arranged for a resizing of the chart, by means of a javascript, upon a body.onresize. I have put code along the following lines in the _BeforeDraw event handler, but nothing happens.

g.Chart.Footer.Font.Size:=Convert.ToInt32(OrigChartHeight/70);
g.Chart.Panel.MarginUnits:=PanelMarginUnits.Pixels;
g.Chart.Panel.MarginBottom:=10*g.Chart.Footer.Font.Size;

In the same routine I resize fonts for labels and Heading, which works perfectly well. The margin adjustment doesn'tcreate a thing , however.
Any good ideas, anyone ?
rgds, Janne

Sandra
Site Admin
Site Admin
Posts: 3132
Joined: Fri Nov 07, 2008 12:00 am

Re: Setting margins ....

Post by Sandra » Mon Jan 09, 2012 4:12 pm

Hello Janne,

I recommend use Bitmap method to repaint the Chart as do in next lines of code:

Code: Select all

    Steema.TeeChart.Styles.Line line1;
    int OrigChartHeight;
    private void InitializeChart()
    {
       WebChart1.Chart.Aspect.View3D = false;
       line1 = new Steema.TeeChart.Styles.Line(WebChart1.Chart);
       line1.FillSampleValues();
       WebChart1.Chart.Chart.Footer.Visible = true;
       WebChart1.Chart.Footer.Text = "TeeChart1";
       OrigChartHeight = WebChart1.Chart.Height;
       WebChart1.BeforeDraw += new PaintChartEventHandler(WebChart1_BeforeDraw);
       System.Drawing.Bitmap bitmpa1 = WebChart1.Chart.Bitmap();
       
    }
    void WebChart1_BeforeDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)
    {
        g.Chart.Footer.Font.Size = Convert.ToInt32(OrigChartHeight / 70);
        g.Chart.Panel.MarginUnits = PanelMarginUnits.Pixels;
        g.Chart.Panel.MarginBottom = 10 * g.Chart.Footer.Font.Size;
    }
Previous code works fine for me using last version of TeeChartFor.Net. Can you tell us, if code works as you want?

I hope will helps.

Thanks,
Best Regards,
Sandra Pazos / 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

Janne
Newbie
Newbie
Posts: 22
Joined: Wed Dec 31, 2008 12:00 am

Re: Setting margins ....

Post by Janne » Tue Jan 10, 2012 3:36 pm

Hi Sandra,

I'm not sure I completely get it. I'm using Prism as a code - not that it's terribly different but anyway. In any case I want to keep the chart interactive, with hotspots and zoom alive, so pictureformat should not be a bitmap, if that's what this implies. What I've done is the following: (please could you direct me to specifically what I'm doing wrong)

I've set the TempChart = httpHandler (designtime) (the web.config updated accordingly);
GetChartFile is automatically set by the IDE as GetChart.aspx, and I haven't changed that.;
Pictureformat designtime is PNG, I'm not sure that is of significance at all,

finally, I use code as follows

method GanttChart.populate(various parameters);
begin
-
various code adding data to the series
and adding the series to the chart
-
end

method GanttChart.wcGantt_BeforeDraw(sender: System.Object;
g: Steema.TeeChart.Drawing.Graphics3D);
begin
...some code...
g.Chart.Footer.Font.Size:=Convert.ToInt32(OrigChartHeight/70);
g.Chart.Panel.MarginUnits:=PanelMarginUnits.Pixels;
g.Chart.Panel.MarginBottom:=2*g.Chart.Footer.Font.Size;

g.Chart.Footer.CustomPosition:=True;
g.Chart.Footer.Font.Color:=Color.Black;
g.Chart.Footer.Left:=0;
g.Chart.Footer.Top:=g.Chart.Height-g.Chart.Footer.Font.Size;
g.Chart.Footer.Visible:=True;
g.Chart.Footer.Text:='Some text';
...some code
end;

Since we're now touching upon it, I have a problem whith displaying the chart as a plain graphic as well, effected by code. I suppose I need to change the PictureFormat setting, but I can't make it work now. That, however, will be my next question, after having had this one sorted out. Thanks for your help.

cheers for now,
rgds, Janne

Sandra
Site Admin
Site Admin
Posts: 3132
Joined: Fri Nov 07, 2008 12:00 am

Re: Setting margins ....

Post by Sandra » Thu Jan 12, 2012 8:58 am

Hello Janne,

Could you send us your project, because we can reproduce exactly your problem here and try to suggest you a good solution?

Thanks,
Best Regards,
Sandra Pazos / 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

Janne
Newbie
Newbie
Posts: 22
Joined: Wed Dec 31, 2008 12:00 am

Re: Setting margins ....

Post by Janne » Fri Jan 13, 2012 4:08 pm

Well, not easily. Its driven by an SQL database, so in order not to have to connect you remotely I'd have to rewrite it a fair deal and end up with essentially the above.. (add the fillsamplevalues trick and you will essentially have it).

I realize however that I am focusing on the wrong problem. The footer issue is not important really, I can put a label underneath the chart, that works fine.
I am more puzzled with the fact that it doesn't behave on the screen as an img (there are no copy etc options like Windows normally provide upon rightclick).
I hope you can bear with me here, since I'm really very new to this art, allthough I cant stay away from pretty complex tasks, as usual.
I have discovered however, that if I remove the webchart1_ClickSeries( .. args ..) eventhandler from the code, then, all of a sudden, it behaves like an image.
Problem is that I want to have that interaction intact, I use it for exploding and collapsing tasks in the Gantt chart by clicking the gantt bars.

I suspect that the bitmap routine you demonstrate above could potentially solve this. Rather than record the chart right-click-and-copy-style, one might hope that your bitmap trick could lead to some means of downloading that bitmap file.
So, supposing I did this (this is Prism now, sorry):

webChart1.PictureFormat:=PictureFormats.JPEG;
var ChartImg : BitMap := new Bitmap(webchart1.Chart.Width,webchart1.Chart.Height);
ChartImg:=webchart1.Chart.Bitmap();

Then, if I understand this correctly, I have the chart hidden away as a jpeg imagefile in the variable ChartImg, right? How would you offer that to the user, i.e. how could the user get access to it?

Thanks for your help.
rgds, Janne

Janne
Newbie
Newbie
Posts: 22
Joined: Wed Dec 31, 2008 12:00 am

Re: Setting margins ....

Post by Janne » Mon Jan 16, 2012 1:26 pm

Hi again, Sandra

After some fiddling, I found out that this is a way:

webChart1.PictureFormat:=PictureFormats.JPEG;
var ChartImg1 : BitMap := new Bitmap(webChart1.Chart.Width,webChart1.Chart.Height);
ChartImg1:=webChart1.Chart.Bitmap();

var ChartImg2 : BitMap := new Bitmap(ChartImg1);

Response.ContentType := "image/jpeg";
ChartImg2.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

ChartImg1.Dispose();
ChartImg2.Dispose();
Response.End();

This is based on some hints picked up elsewhere on the web, and it works. It will yield a normal jpeg, which can be rightclicked and so on. It feels rather awkward and unnecessary to do that extra copy to ChartImg2, but whatever works...
Is this a route you would support?

cheers,
rgds, Janne

Janne
Newbie
Newbie
Posts: 22
Joined: Wed Dec 31, 2008 12:00 am

Re: Setting margins ....

Post by Janne » Tue Jan 17, 2012 7:00 pm

By the way, I don't need the extra copy. I don't know why that was suggested in the first place. It works anyway.

And as for the footer problem above: I finally took your point Sandra. Copying to a new bitmap obviously repaints the chart. So - that too works.
Thanks, Sandra.
I might learn this in due time...
rgds, Janne

Sandra
Site Admin
Site Admin
Posts: 3132
Joined: Fri Nov 07, 2008 12:00 am

Re: Setting margins ....

Post by Sandra » Wed Jan 18, 2012 8:52 am

Hello Janne,

Sorry for the delay. I am glad that you find a solution for your problem :).

Thanks,
Best Regards,
Sandra Pazos / 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

Post Reply