2016-12-17 2 views
0

Предположим, что у меня есть макрос, содержащий два TGraphs: T1 и Т2 и у меня есть холст «С» разделен на две части:Почему TCanvas не рисует во время выполнения макроса в корневой оболочке?

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

В отношении комментариев по мета-вопросам, вероятно, лучше, если вы сделаете это в комментариях, поскольку это не представляет особого интереса для большинства читателей (которые не подписывают или не голосуют по вопросам). Читатели очень предпочитают здесь лаконично! – halfer

ответ

3

ОК, я нашел решение в потоке ЦЕРНовские-Рута:

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

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

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

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

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

Смежные вопросы