티스토리 뷰


VTK 차트에서 기본적으로 표시되는 점의 두께를 조절 하고 싶을 경우가 있다.

외부에서 아무리 Pen의 SetWidth()에 3.0을 넣어도 점의 크기가 두껍게 나와 VTK라이브러리 소스를 분석해 보았다.

보통은 랜더링 하는 Pen의 width 값을 변경 해 주면 되는데 VTK의 경우 내부 소스코드에서 하드코딩이 되어 있는 부분이 있다.

아래는 VTK라이브러리 vtkPlotPoints 클래스의 Paint 함수에 구현 되어 있는 부분이다.

// Maintain legacy behavior (using pen width) if MarkerSize was not set

float width = this->MarkerSize;

if (width < 0.0f)

{

    width = this->Pen->GetWidth() * 2.3;

    if (width < 8.0)

    {

        width = 8.0;

    }

}


위와 같이 MarkerSize가 디폴트인 -1일 경우 펜의 넓이를 구해와서 2.3을 곱하도록 해놨는데 왜 2.3을 곱하는지에 대해 이유는 모르겠고 그 아래 그 값이 8.0 보다 작을 경우 최소 사이즈를 8.0으로 해놨다. 그래서 아무리 외부에서 SetWidth 해도 두껍게 나오는 것이었다.


VTK차트 중 매트릭스 차트의 경우 내부 클래스에서 MarkerSize에 대한 값을 가지고 있어서 설정 된 값으로 보이지만 일반적으로 vtkPlotPoint 클래스를 바로 사용 할 경우 아무리 외부에서 Pen->SetWidth()로 값을 넣어줘도 최소값은 8.0이라 점이 두껍게 표시 되는 것이다. 

그러므로 VTK라이브러리 소스코드의 수정을 원하지 않는다면 외부에서 Pen->SetWidth()로 값을 넣지 말고 SetMarlerSize()로 값을 넣어야 원하는 점의 크기를 설정해야 한다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
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
글 보관함