일반적으로 contour를 표현하는 프로그램을 보면 오른쪽 상단에 레벨별로 색상을 표현한 colorbar를 볼수가 있습니다.
이를 한번 구현해 보았습니다.
일단 Layer를 하나 만들고 그 위에 colorbar를 표기하도록 하였습니다.
신경쓰였던 부분은 윈도우의 크기가 변경될때 어떻게 colorbar의 크기를 일정하게 유지하는냐 하는 것이었습니다.
이렇게 해서 제가 원하는 colorbar를 표현하는데 성공했습니다.!!!
코드는 아래에...
이를 한번 구현해 보았습니다.
일단 Layer를 하나 만들고 그 위에 colorbar를 표기하도록 하였습니다.
신경쓰였던 부분은 윈도우의 크기가 변경될때 어떻게 colorbar의 크기를 일정하게 유지하는냐 하는 것이었습니다.
이렇게 해서 제가 원하는 colorbar를 표현하는데 성공했습니다.!!!
코드는 아래에...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | glPushAttrib (GL_LIST_BIT); charbuf[20] = {'\0',}; Quantity_Color color(1.0, 1.0, 0.0, Quantity_TOC_RGB); aToppestLayer->SetColor(color); //! pixel 단위의 colorbar의 min,max를 구한다. double minx = right - (right - left)*70/w; double maxx = right - (right - left)*50/w; double maxy = top - (top - bottom)*20/h; double miny = top - (top - bottom)*300/h; const doubledStep = (maxy - miny) / 7.0; for(inti = 0;i < 7;++i) { glBegin( GL_QUADS ); glNormal3f( 0.f, 0.f, 1.f); glColor3f( (float)((255- i*255.0/7.0) / 255.f), (float)((255- i*255.0/7.0) / 255.f), (float)((255- i*255.0/7.0) / 255.f) ); glVertex3d (minx , maxy - i*dStep , 0.f); glVertex3d (maxx , maxy - i*dStep , 0.f); glVertex3d (maxx , maxy - (i+1)*dStep , 0.f); glVertex3d (minx , maxy - (i+1)*dStep , 0.f); glEnd(); //! print text aToppestLayer->SetTextAttributes(Graphic3d_NOF_ASCII_MONO, Aspect_TODT_NORMAL, color); sprintf (buf, "%.2lf", i * 10.0); aToppestLayer->DrawText(buf, maxx , maxy - i*dStep, 14); } glPopAttrib (); aToppestLayer->End(); | cs |
댓글
댓글 쓰기