Hello Christian,
I think the method:
http://root.cern.ch/root/htmldoc/TCanvasImp.html#TCanvasImp:GetWindowGeo
metry
returns you the geometry of the entire window, including frame and
other decoration.
http://root.cern.ch/root/htmldoc/TVirtualX.html#TVirtualX:GetGeometry
See:
http://root.cern.ch/root/htmldoc/src/TCanvas.cxx.html#TCanvas:Build
for example.
Watch there
// Get effective window parameters (with borders and menubar)
fCanvasImp->GetWindowGeometry(fWindowTopX, fWindowTopY,
fWindowWidth, fWindowHeight);
// Get effective canvas parameters without borders
Int_t dum1, dum2;
gVirtualX->GetGeometry(fCanvasID, dum1, dum2, fCw, fCh);
Hope this helps, Valeri
> -----Original Message-----
> From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch]
> On Behalf Of cstrato
> Sent: Sunday, November 10, 2002 2:35 PM
> To: roottalk@pcroot.cern.ch
> Subject: [ROOT] How to set correct size of TCanvas
>
> Dear Rooters
>
> Below is a short macro where I use TH2F::SetCellContent()
> to draw an image: .x DrawImage(640,480,"COLZ")
>
> My question is:
> How can I set the size of TCanvas so that an image of size
> 640 x 480 is displayed exactly with 640 x 480 screen pixels?
>
> When I create a GUI, how can I display the image in a TFrame
> with the correct pixel size?
>
> Is there a way to find out the current pixel settings of a
> monitor (e.g. 1024 x 768) from within ROOT?
>
> Thank you in advance for your help.
>
> Best regards
> Christian
> _._._._._._._._._._._._._._._._
> C.h.i.s.t.i.a.n S.t.r.a.t.o.w.a
> V.i.e.n.n.a A.u.s.t.r.i.a
> _._._._._._._._._._._._._._._._
>
>
> //------------------macro------------------------------------
> void DrawImage(Int_t nrows, Int_t ncols, Option_t *opt)
> {
> Double_t img[1000][1000];
> for (Int_t i=0;i<nrows;i++) {
> for (Int_t j=0;j<ncols;j++) {
> img[i][j] = i + j;
> }//for_j
> }//for_i
>
> TCanvas *c1 = new TCanvas("c1","Image example",200,10,700,700);
>
> TH2F *h2;
> Double_t min = 0;
> Double_t max = TMath::Max(nrows,ncols);
> h2 = new TH2F("H2","Image test",nrows,0,nrows,ncols,0,ncols);
> h2->SetMinimum(min);
> h2->SetMaximum(max);
> for (Int_t i=0;i<nrows;i++) {
> for (Int_t j=0;j<ncols;j++) {
> h2->SetCellContent(i+1,j+1,img[i][j]);
> }//for_j
> }//for_i
>
> gStyle->SetPalette(1,0);
> gStyle->SetOptStat(0000000);
>
> h2->Draw(opt);
> }//DrawImage
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:17 MET