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(); } }