为什么TCanvas在根shell中执行宏时不会绘制?

时间:2016-12-17 01:47:53

标签: c++ root-framework tcanvas

假设我有一个包含两个 TGraphs 的宏: T1 T2 ,我有一个画布" C "分为两部分:

TCanvas *C = new TCanvas("","",0,0,400,400);
C->Divide(2,1);

当这部分被执行时,blanc画布出现在我的屏幕上,但它变灰了..不活跃!但那没关系,那就继续......

该程序有两个不同的部分,第一部分完成计算进入画布的前半部分并绘制第一个 TGraph

C->cd(1);
T1->Draw("AP");

此时我希望已经在画布的前半部分看到了图形,但遗憾的是没有出现,画布仍处于非活动状态!该计划进入下一部分:

C->cd(2);
T2->Draw("AP");

同样的故事还没有出现在画布上,但随后执行结束,我回到了root shell,就像这样:

root[#]

现在我可以看到两张图!我想要的是,T1->Draw("AP")已经执行过的部分应该已经显示在cd(1)上,然后会出现cd(2)上的图表。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:3)

好的,我在CERN-ROOT的帖子中找到了一个解决方案:

https://root.cern.ch/phpBB3/viewtopic.php?t=13082

用户“couet”建议使用

--files

每次“C->Modified(); C->Update();”之后

我将此应用于我的问题并且它有效。