IDL/Object Graphics

Object Graphics in IDL [31]

이상우_IDL 2011. 4. 5. 11:46
728x90
반응형

텍스트 객체의 생성 및 이용

지난 게시글의 예제에서 은근슬쩍 텍스트 객체를 생성하여 사용해보았는데, 이번에는 텍스트 객체에 대한 좀 더 세부적인 내용을 살펴보기로 한다. 텍스트 객체를 생성할 때에는 다음과 같이 해당 문자 또는 문자 배열을 인자로서 부여한다.

oText = OBJ_NEW(‘IDLgrText’, ‘A Text String’)

oTextArr = OBJ_NEW(‘IDLgrText’, [‘A’, ‘B’, ‘C’])

그리고 이렇게 생성된 텍스트 객체를 화면상에 표시하려면 그 위치를 좌표로 지정해줘야 한다. 다음 예제를 살펴보자.

oWindow = OBJ_NEW(‘IDLgrWindow’, DIMENSIONS=[400,400])

oView = OBJ_NEW(‘IDLgrView’, VIEWPLANE_RECT=[0,0,10,10])

oModel = OBJ_NEW(‘IDLgrModel’)

oText = OBJ_NEW(‘IDLgrText’, ‘IDL User’, LOCATION=[4,4], COLOR=[50,100,150])

oView -> Add, oModel

oModel -> Add, oText

oWindow -> Draw, oView

이 예제를 실행하면 다음 그림과 같이 윈도우 객체의 정가운데에서 약간 아래쪽에 ‘Text String’이라는 문자가 위치함을 알 수 있다. 여기서 텍스트 객체를 생성할 때 LOCATION이라는 속성에 대하여 좌표가 부여된 것을 볼 수 있다. 이 좌표는 텍스트 객체의 왼쪽 아래 구석부분의 위치에 해당된다. 현재 뷰플레인 사각형이 가로로 10, 세로로 10이란 크기로 정의되어 있으므로, [4, 4]라는 좌표는 정가운데에서 약간 왼쪽 아래임을 알 수 있다. 그리고 문자의 수평방향 정렬 위치는 ALIGNMENT라는 속성으로 조절할 수 있는데, 기본값은 0.0으로 왼쪽 정렬에 해당된다. 이 값이 1.0이면 오른쪽 정렬, 0.5이면 가운데 정렬이 된다. 수직방향 정렬 위치의 경우는 VERTICAL_ALIGNMENT라는 속성으로 조절할 수 있다. 이 속성의 경우 기본값은 0.0으로 바닥 정렬에 해당되고, 1.0이면 꼭대기 정렬이 될 것이다. 이와 같은 속성들을 변경해가며 테스트해보면 좋을 것이다.


텍스트 객체의 방향

앞의 예제에서 표시한 텍스트 객체를 보면 그 방향이 X축과 나란한, 즉 수평방향임을 알 수 있다. 이것은 텍스트의 기저선(baseline)의 방향이 X축 방향이라는 뜻도 된다. 이 기저선의 방향도 텍스트 객체가 갖는 하나의 속성으로서 임의로 설정이 가능하다. 이 속성이 바로 BASELINE인데, 앞의 예제에서 다음과 같은 문구를 추가하여 기저선을 변경해보자.

oText -> SetProperty, BASELINE=[2,3]

여기서 BASELINE에 부여된 좌표의 의미는, 기저선의 방향이 원점인 [0, 0]과 주어진 좌표인 [2, 3]을 잇는 선과 나란하다는 것이다. 따라서 다음 그림과 같이 오른쪽 위로 기울어진 모습으로 보이게 될 것이다.

기저선의 방향은 3차원으로도 설정 가능하다. 이번에는 다음과 같이 해보자.

oText -> SetProperty, BASELINE=[2,1,2]

그러면 기저선의 방향이 3차원 공간상에서 [0, 0, 0]에서 [2, 1, 3]을 잇는 선과 평행이라는 의미이며, 다음 그림과 같이 제법 입체적인 회전을 한 것처럼 보이게 된다. 이렇게 기저선의 방향을 바꿔서 표시해보면, 텍스트 객체가 어떤 각도로 나타날지를 결정할 수 있다.

이번에는 기저선과 더불어 텍스트 객체의 방향을 결정짓는 또 하나의 중요한 요소인 윗방향(Upward Direction)이라는 개념을 살펴보자. 이것은 텍스트 객체의 UPDIR이라는 속성에 해당되는데, 기저선의 경우 기본 설정이 X축 방향이라면 윗방향의 경우 기본설정은 Y축 방향이 된다. 기저선의 방향과 윗방향이 바로 텍스트 객체가 그려지는 평면을 의미한다고 보면 된다. 따라서 기저선의 방향과 윗방향은 항상 서로 수직일 수밖에 없다. 여기서 주의할 점은, 이 윗방향이란 개념이 텍스트 객체의 기울기를 뜻하는 것은 아니라는 점이다. 따라서 어떤 텍스트 객체에 대하여 기저선과 수직이 아닌 방향을 윗방향 속성으로 부여한다고 해도, 그 텍스트 객체는 항상 기저선에 수직한 방향으로 나타날 것이다. 이런 이유로 텍스트 객체에 대하여 이 두 속성을 동시에 정의하는 경우는 별로 없고, 둘 중 하나만을 이용하는 경우가 많다. 텍스트 객체가 그려질 3차원상의 평면을 정의하는 요소로서 기저선과 윗방향이 함께 존재한다는 점을 유념하도록 한다.

텍스트 객체의 폰트

그렇다. 텍스트 객체를 얘기하는데 있어서 가장 중요한 속성 중 하나가 바로 폰트(Font)이다. 다만 다이렉트 그래픽에서와 달리 객체지향 그래픽의 세계에서는 폰트도 하나의 객체임을 이미 확인한 바 있다. 따라서 이 폰트 객체에 대해서는 향후에 보조 객체들에 관한 내용을 다룰 때 따로 소개하도록 하겠다.

반응형