프로그래밍 관련/Win API

WIndows API - #10-1 그래픽 처리 - (맵핑 - 윈도우 좌표)

QA Engineer - P군 2015. 10. 10. 02:48
반응형

기본적으로 윈도우는 점(픽셀)단위로 그래픽이 이루어집니다. 이 픽셀은 최소단위이며 다른 말로는 화소라고 할 수 있으며,(600dpi..등등)

또한 이미지나 문자를 출력하기 위해서는 X와 Y 좌표가 필요합니다.


먼저 그림을 보겠습니다.

 

사분면을 놓고 생각을 해보자면 현재 우리가 사용하는 윈도우 API에서의 좌표는 우측으로 갈 수록 X 값이 증가하고 Y 축으로 갈수록 Y값도 증가합니다.

 

화면 좌측 상단이 Origin(원점)이라고 할때 수학에서 배웠던 4/4분면에 위치하고 X축도 증가하지만

Y축은 음수가 아닌 양수로 표시됩니다. 

 

즉 그림의 무지가 출력되는 위치가 (0,0)과 (4 ,5 )라고 할때  위 그림처럼 출력되는 것입니다.

 

 

 

 

그럼 만약 -3 ,-2에 출력된 그림이 있다면, 이것은 어떻게 볼 수 있을까요?
그림 자체를 움직이면 되지만 그림 자체를 움직이지 않는다면 해당 지역에 출력된 그림은 평생 볼 수가 없습니다.


그렇다면 해당 정보는 존재하지 않는것일까?
그것 또한 아닙니다. 우리가 비트맵을 -100, -100 , 0 , 0 좌표에 그린다면 해당 비트맵은 그 좌표에 존재하고 있습니다. 

즉 화면상에 출력되는 좌표와 윈도우 내부에서 사용하는 좌표가 따로 존재하며, 이것을 통해 화면에 표시되는 좌표를 바꾸거나 

이동시킬 수 있는 기능이 필요한 것입니다.

이것을 맵핑 모드(mapping mode)라고 하며, 주어진 좌표가 화면상의 어느곳에 해당하는지를 정하는 방법입니다.
윈도우에서의 좌표는 논리좌표와 물리좌표 2가지가 존재합니다.

논리 좌표 - 윈도우즈 내부에서 사용되는 좌표입니다. 실제위치는 경우에 따라 달라질 수 있겠지만 그래픽 함수들이 모두 사용하는 좌표는 

논리 좌표이며, DC에 그릴때 사용하는 좌표는 모두 논리 좌표입니다.

물리 좌표 - 실제 화면에 출력되는 좌표이며, 픽셀 단위를 사용합니다. 모니터의 물리적인 픽셀 단위를 사용하므로 물리 좌표는 

그 좌표가 지정되어 있습니다. 윈도우를 관리하는 함수에서 사용하는 좌표는 물리 좌표입니다.

위 2가지의 좌표의 관계를 정의하는 것이 맵핑 모드이며, 맵핑 모드에 따라서 (100, 100) 논리 좌표가 물리적으로 (10 , 10)이 

될 수도 있고, 또 다르게 변경 될 수 있습니다.

(참고) 윈도우즈 API 정복 - 2 [김상형 저]

반응형