Note3:TCanvas类
TCanvas是一个画布的类,任何一张图,无论是直方图、函数曲线还是其他图,最终显示,都需要在这样一个画布上完成。实际上,如上一节那样,当你没有建立TCanvas实例就使用h.Draw()
这个方法时,系统总会默认给这个Draw()
方法创建一个画布,并且默认给一个名字叫c1
。
Info in <TCanvas::MakeDefCanvas>: created default TCanvas with name c1
但是这样你就没有办法定制这个画布的各种属性。所以,最后出图的时候,还是需要这么一个画布的。
定义一个TCanvas对象
一个简单的画布可以这样定义:
TCanvas* c = new TCanvas("c","A Normal Canvas",1000,1000);
这从C++层面来讲就是定义了一个TCanvas类的指针,TCanvas
是类的名字,后面的*
表示这个变量是一个指针。new关键字用于创建一块对应于某个对象的内存空间,并返回一个指针,是C++中肥肠常见的动态管理内存的用法。后面调用了TCancas类的构造函数,参数中第一项一般和定义的指针名一样,表示这个画布在内存中的位置。第二项是画布的名字,最后两项是画布的长和宽。
这样就定义了一块空白的画布,这时直接在下一行将要画的对象Draw()
出来,它的图像就会显示在这张画布上。
简单的子图
有了画布,还可以做一些其他的操作,比如说把它分成或多子图:
c->Divide(2,3)
这就把画布分成两行三列,通过cd()
方法,可以切换到不同的子图中去画图。最后把整张画布都显示出来。
c->cd(1);
h.Draw();
c->cd(2);
h.Draw();
....
c->Draw()