ROOT logo

From $ROOTSYS/tutorials/graphics/canvas.C

{
//Example of primitives in a canvas
// To see the output of this macro, click begin_html <a href="gif/canvas.gif" >here</a> end_html
// One of the first actions in a ROOT session is the creation of a Canvas.
// Here we create a Canvas named "c1"
//Author: Rene Brun
   
  gROOT->Reset();
  c1 = new TCanvas("c1","Canvas Example",200,10,600,480);

  gBenchmark->Start("canvas");
//
// Inside this canvas, we create two pads
//
  pad1 = new TPad("pad1","This is pad1",0.05,0.52,0.95,0.97);
  pad2 = new TPad("pad2","This is pad2",0.05,0.02,0.95,0.47);
  pad1->SetFillColor(11);
  pad2->SetFillColor(11);
  pad1->Draw();
  pad2->Draw();
//
// A pad may contain other pads and graphics objects.
// We set the current pad to pad2.
// Note that the current pad is always highlighted.
//
  pad2->cd();
  pad21 = new TPad("pad21","First subpad of pad2",0.02,0.05,0.48,0.95,17,3);
  pad22 = new TPad("pad22","Second subpad of pad2",0.52,0.05,0.98,0.95,17,3);
  pad21->Draw();
  pad22->Draw();
//
// We enter some primitives in the created pads and set some attributes
//
  pad1->cd();
  float xt1 = 0.5;
  float yt1 = 0.1;
  t1 = new TText(0.5,yt1,"ROOT");
  t1->SetTextAlign(22);
  t1->SetTextSize(0.05);
  t1->Draw();
  line1 = new TLine(0.05,0.05,0.80,0.70);
  line1->SetLineWidth(8);
  line1->SetLineColor(2);
  line1->Draw();
  line1->DrawLine(0.6,0.1,0.9,0.9);
  line2 = new TLine(0.05,0.70,0.50,0.10);
  line2->SetLineWidth(4);
  line2->SetLineColor(5);
  line2->Draw();
//
  pad21->cd();
  t21 = new TText(0.05,0.8,"This is pad21");
  t21->SetTextSize(0.1);
  t21->Draw();
  float xp2 = 0.5;
  float yp2 = 0.4;
  paves = new TPavesText(0.1,0.1,xp2,yp2);
  paves->AddText("This is a PavesText");
  paves->AddText("You can add new lines");
  paves->AddText("Text formatting is automatic");
  paves->SetFillColor(43);
  paves->Draw();
  pad22->cd();
  t22 = new TText(0.05,0.8,"This is pad22");
  t22->SetTextSize(0.1);
  t22->Draw();
  float xlc = 0.01;
  float ylc = 0.01;
  label = new TPaveLabel(xlc, ylc, xlc+0.8, ylc+0.1,"This is a PaveLabel");
  label->SetFillColor(24);
  label->Draw();

// Modify object attributes in a loop
  Int_t nloops = 50;
  float dxp2   = (0.9-xp2)/nloops;
  float dyp2   = (0.7-yp2)/nloops;
  float dxlc   = (0.1-xlc)/nloops;
  float dylc   = (0.4-xlc)/nloops;
  float dxt1   = (0.5-xt1)/nloops;
  float dyt1   = (0.8-yt1)/nloops;
  float t10    = t1.GetTextSize();
  float t1end  = 0.3;
  float t1ds   = (t1end - t10)/nloops;
  Int_t color  = 0;
  for (int i=0;i<nloops;i++) {
     color++;
     color %= 8;
     line1->SetLineColor(color);
     t1->SetTextSize(t10 + t1ds*i);
     t1->SetTextColor(color);
     t1->SetX(xt1+dxt1*i);
     t1->SetY(yt1+dyt1*i);
     pad1->Modified();
     paves->SetX2NDC(xp2+dxp2*i);
     paves->SetY2NDC(yp2+dyp2*i);
     pad21->Modified();
     label->SetX1NDC(xlc+dxlc*i);
     label->SetY1NDC(ylc+dylc*i);
     label->SetX2NDC(xlc+dxlc*i+0.8);
     label->SetY2NDC(ylc+dylc*i+0.2);
     pad22->Modified();
     c1->Update();
  }
  gBenchmark->Show("canvas");
//
// Try now to point on any object on the screen: pad, text, lines, etc.
// When the cursor points to sensitive areas in an object, the cursor
// shape changes and suggests the type of action that can be applied.
//
// For example, one can move, grow,shrink a pad.
// A text can be moved.
// A line can be moved or its end points can be modified.
// One can move, grow and shrink PaveLabels and PavesText.
// Point to an object and click the right mouse button to change attributes.
// Try to change the canvas size.
// In the canvas "File" menu, select the option "Print" to produce
// a PostScript file with a copy of the canvas.
	
}
 canvas.C:1
 canvas.C:2
 canvas.C:3
 canvas.C:4
 canvas.C:5
 canvas.C:6
 canvas.C:7
 canvas.C:8
 canvas.C:9
 canvas.C:10
 canvas.C:11
 canvas.C:12
 canvas.C:13
 canvas.C:14
 canvas.C:15
 canvas.C:16
 canvas.C:17
 canvas.C:18
 canvas.C:19
 canvas.C:20
 canvas.C:21
 canvas.C:22
 canvas.C:23
 canvas.C:24
 canvas.C:25
 canvas.C:26
 canvas.C:27
 canvas.C:28
 canvas.C:29
 canvas.C:30
 canvas.C:31
 canvas.C:32
 canvas.C:33
 canvas.C:34
 canvas.C:35
 canvas.C:36
 canvas.C:37
 canvas.C:38
 canvas.C:39
 canvas.C:40
 canvas.C:41
 canvas.C:42
 canvas.C:43
 canvas.C:44
 canvas.C:45
 canvas.C:46
 canvas.C:47
 canvas.C:48
 canvas.C:49
 canvas.C:50
 canvas.C:51
 canvas.C:52
 canvas.C:53
 canvas.C:54
 canvas.C:55
 canvas.C:56
 canvas.C:57
 canvas.C:58
 canvas.C:59
 canvas.C:60
 canvas.C:61
 canvas.C:62
 canvas.C:63
 canvas.C:64
 canvas.C:65
 canvas.C:66
 canvas.C:67
 canvas.C:68
 canvas.C:69
 canvas.C:70
 canvas.C:71
 canvas.C:72
 canvas.C:73
 canvas.C:74
 canvas.C:75
 canvas.C:76
 canvas.C:77
 canvas.C:78
 canvas.C:79
 canvas.C:80
 canvas.C:81
 canvas.C:82
 canvas.C:83
 canvas.C:84
 canvas.C:85
 canvas.C:86
 canvas.C:87
 canvas.C:88
 canvas.C:89
 canvas.C:90
 canvas.C:91
 canvas.C:92
 canvas.C:93
 canvas.C:94
 canvas.C:95
 canvas.C:96
 canvas.C:97
 canvas.C:98
 canvas.C:99
 canvas.C:100
 canvas.C:101
 canvas.C:102
 canvas.C:103
 canvas.C:104
 canvas.C:105
 canvas.C:106
 canvas.C:107
 canvas.C:108
 canvas.C:109
 canvas.C:110
 canvas.C:111
 canvas.C:112
 canvas.C:113
 canvas.C:114
 canvas.C:115
 canvas.C:116
 canvas.C:117
 canvas.C:118
 canvas.C:119
 canvas.C:120
thumb