ROOT (a Data analysis Framework) - Note3:TCanvas类

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()
发布了29 篇原创文章 · 获赞 3 · 访问量 6700

猜你喜欢

转载自blog.csdn.net/weixin_43316938/article/details/90524534