Re: problem with TView zoom (fwd)

From: Olivier Couet <Olivier.Couet_at_cern.ch>
Date: Fri, 17 Feb 2006 18:28:11 +0100 (CET)

In fact it is enough to put gPad->Update(); just after the 2nd BuildLayout()->Draw(); the you will get the small picture. Sorry to not have seen that faster.
Here is the modifed test() main program:

void test()
{

   TCanvas *c1 = new TCanvas("c1","The ... canvas",200,10,700,700);    c1->cd();                                                                                 

   BuildLayout()->Draw();
   //ShowAxis(-15,-15,-20,4);
   ShowView(1.);

                                                                                
                                                                                

   TCanvas* c2 = new TCanvas("c2","The ... canvas",200,10,700,700);    c2->cd();                                                                                 

   BuildLayout()->Draw();
   gPad->Update();                                                                                 

   ShowView(0.5);                                                                                 

}

Olivier

> ---------- Forwarded message ----------
> Date: Thu, 16 Feb 2006 11:33:01 +0100 (CET)
> From: G.Mavromanolakis <gmavroma_at_mail.cern.ch>
> To: roottalk_at_pcroot.cern.ch
> Cc: gmavroma_at_mail.cern.ch
> Subject: [ROOT] problem with TView zoom
>
> Hello ROOTers,
>
> I am developing a 3d event display for a monitor application.
> I used ROOTv4.02.00 under ScientificLinux3 and I tried to switched
> recently to a newer version. I experience some strange behavior from
> the zoom methods in TView class. They work as expected
> when invoked within the CINT or by clicking a TView object on a
> pad. But when they are put in a macro or source code they produce
> no effect.
> For example something like
>
> void test()
> {
> TCanvas *c1 = new TCanvas("c1","The ... canvas",200,10,700,700);
> c1->cd();
>
> BuildLayout()->Draw();
> //ShowAxis(-15,-15,-20,4);
> ShowView(1.);
>
>
> TCanvas* c2 = new TCanvas("c2","The ... canvas",200,10,700,700);
> c2->cd();
>
> BuildLayout()->Draw();
> //ShowAxis(-15,-15,-20,4);
> ShowView(0.5);
>
> }
>
> with
>
> void ShowView(float zoomfactor)
> {
> gPad->GetView()->ZoomView(0,zoomfactor);
> gPad->SetFillColor(17);//light grey
> gPad->Modified();
> gPad->Update();
> }
>
> should produce 2 canvases with one normal and one small view.
> This is the case for v4.02.00 or older. When trying with a newer version
> (4.04.02g, 5.08.00) there is no zoom, the example above
> gives 2 identical canvases!
>
> Also the TView::Zoom, ZoomIn, ZoomOut methods behave similarly
> strange, ie they give no effect.
>
> Any hints??? Am I doing something wrong???
>
> Thanks and regards,
> George
>
> PS. I attach a small example macro
> (run it from root with
> .L test.C
> test()
> )

-- 
Org:    CERN - European Laboratory for Particle Physics.
Mail:   1211 Geneve 23 - Switzerland                     Mailbox: J25910      
E-Mail: Olivier.Couet_at_cern.ch                            Phone:   +41 22 7676522
WWW:    http://cern.ch/Olivier.Couet/                    Fax:     +41 22 7670300
Received on Fri Feb 17 2006 - 18:28:18 MET

This archive was generated by hypermail 2.2.0 : Mon Jan 01 2007 - 16:31:57 MET