Предположим, у меня есть макрос, который содержит два 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)
должен появиться. Есть ли способ достичь этого?
ОК, я нашел решение в ветке CERN-ROOT:
https://root.cern.ch/phpBB3/viewtopic.php?t=13082
где пользователь «couet» предложил использовать
C->Modified();
C->Update();
после каждогоC->Draw();
«
Я применил это к моей проблеме, и это сработало.
Других решений пока нет …