Почему TCanvas не рисует во время выполнения макроса в корневой оболочке?

Предположим, у меня есть макрос, который содержит два TGraphs: T1 а также T2 а у меня есть холстСразделен на две части:

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

когда эта часть исполняется, на моем экране появляется холст, но он неактивен … неактивен! Но это нормально, тогда это продолжается ..

Программа состоит из двух отдельных частей, в первой части она завершает вычисления, входит в первую половину холста и рисует первую TGraph:

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

в этот момент я ожидаю увидеть график на первой половине холста, но, к сожалению, ничего не появляется, холст остается неактивным! Программа переходит к следующей части:

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

Та же самая история еще ничего не появляется на холсте, но затем выполнение заканчивается, и я возвращаюсь к корневой оболочке, как показано ниже:

root[#]

и теперь я вижу два графика! То, что я хочу, это то, что части, которые были выполнены, как T1->Draw("AP") должен уже появиться на cd(1) а потом график на cd(2) должен появиться. Есть ли способ достичь этого?

0

Решение

ОК, я нашел решение в ветке CERN-ROOT:

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

где пользователь «couet» предложил использовать

C->Modified();
C->Update();

после каждогоC->Draw();«

Я применил это к моей проблеме, и это сработало.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]