ROOT 가이드

5.5 색상 정의하기 TColor

TColor 

ROOT에 기본으로 정의 되어 있는 색들은 Int_t 타입으로 정의되어 있다. 정의 되어 있는 색상들은 다음과 같이 코드를 돌려서 확인 할 수 있다.

void colors()
{
    TCanvas *cvs_ct = new TCanvas("cvs_ct","color table",50,100,500,200);
    cvs_ct -> DrawColorTable();

    TColorWheel *cw = new TColorWheel();
    TCanvas *cvs_cw = new TCanvas("cvs_cw","color wheel",600,100,600,600);
    cw -> SetCanvas(cvs_cw);
    cw -> Draw();
}

Colorwheel 에서 봐둔 색상을 선택하는 방법은 [색상 그룹 이름] + [그룹 안에서 번호] 이다. 다음 예제에서 그래프의 선, 마커, 채움 색상을 설정하는 부분을 참고하자.

void colors_usage_example()
{
    auto cvs = new TCanvas("cvs_color_usage","color usage",600,450);
    double x[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    double y[] = {1, 4, 6, 7, 7.5, 7.5, 7, 6, 4, 1};
    TGraph* graph = new TGraph(10,x,y);
    graph -> SetMarkerStyle(20);
    graph -> SetMarkerSize(2);
    graph -> SetLineWidth(6);

    graph -> SetLineColor(kBlue+2);
    graph -> SetMarkerColor(kOrange+10);
    graph -> SetFillColor(kSpring+1);

    graph -> Draw("aplf");
}

 

RGB로 색 정의하기

추가로 새로운 색상을 정의 하고 싶을 경우 1179번 이후로 색상을 TColor 로 정의 할 수 있다. 정의 되어있는 색상 번호 1179는 ROOT 버전이 업데이트 될 때마다 바뀔 수 있으므로 TColor::GetFreeColorIndex() 함수로 마지막 색인덱스+1 인 값을 가져와서 확인해 보는것도 좋다.  정의한 색을 확인하기 위하여 TCanvas 배경색으로 칠해보자. 

void colors_my_definition()
{
    new TColor(1201, 0.0  , 0.247, 0.360);
    new TColor(1202, 0.735, 0.313, 0.564);
    new TColor(1203, 1.0  , 0.388, 0.380);
    new TColor(1204, 1.1  , 0.650, 0.0  );

    auto cvs = new TCanvas("cvs","paint canvas background");
    cvs -> Divide(2,2);
    for (auto i : {1,2,3,4}) {
        cvs -> cd(i) -> SetFillColor(1200+i);
        cvs -> cd(i) -> Modified();
        cvs -> cd(i) -> Update();
    }
}

 

참고자료

댓글

댓글 본문
버전 관리
ejungwoo
현재 버전
선택 버전
graphittie 자세히 보기