2016-01-20 20 views
1

我正在努力解決一個我想在TCanvas上繪製大量橢圓的問題。我通過鏈接適當的ROOT庫來構建ROOT之外的程序。我可以通過將它硬編碼到主畫布上來成功繪製單個橢圓,但是當我嘗試將其調整爲繪製一系列橢圓時,程序將輸出一個空畫布。在ROOT中迭代繪製TEllipse

extern void InitGui(); 
VoidFuncPtr_t initfuncs[] = { InitGui, 0 }; 
int Error; 
TROOT root("plot", "Plot", initfuncs); 

int main(int argc, char **argv) { 
    TApplication *app = new TApplication("App", &argc, argv); 
    TCanvas *c = new TCanvas(); 
    c->Range(0,0,100,100); 
    TEllipse *e; 

    while(getline(myFile1, coordinate)) { 
    split(myVector, coordinate, is_any_of(" ")); 
    arr[0] = myVector.at(0); 
    arr[1] = myVector.at(1); 
    getline(myFile2, arr[2]); 
    e = plotZone(stod(arr[0]), stod(arr[1]), stod(arr[2])); 
    e->Draw(); 
    c->Update(); 
    } 

    c->Show(); 
    app->Run(); 
    delete app; 
    return 0; 
} 

TEllipse * plotZone(double x, double y, double r) { 
    TEllipse *e = new TEllipse(x, y, r, r); 
    e->SetFillColor(38); 
    e->SetFillStyle(3003); 

    return e; 
} 

我真的只是想知道爲什麼傳遞TEllipse回到主的行爲防止它被渲染,或者是它也許是我做的抽獎/更新錯了嗎?所有的幫助感激:)

回答

1

這很可能由現在這個放棄你已經想通了/,但這裏有雲:

默認情況下,Draw()方法將覆蓋任何是當前TPAD。你想給它"same"選項:

e->Draw("same");

+0

你們要讚美!看來ROOT支持很難得到 –