기본적으로 윈도우는 점(픽셀)단위로 그래픽이 이루어집니다. 이 픽셀은 최소단위이며 다른 말로는 화소라고 할 수 있으며,(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 [김상형 저]
'프로그래밍 관련 > Win API' 카테고리의 다른 글
WIndows API - #10-3 그래픽 처리 - (맵핑 - 좌표 공간과 변환) (0) | 2015.10.11 |
---|---|
WIndows API - #10-2 그래픽 처리 - (맵핑 - 원점 바꾸기) (2) | 2015.10.11 |
WIndows API - #9-7 그래픽 처리 - (여러개의 DC 이미지 출력하기) (2) | 2015.10.09 |
WIndows API - #9-6 그래픽 처리 - (더블 버퍼링 - 자세히 보기)(2) (0) | 2015.09.07 |
WIndows API - #9-5 그래픽 처리 - (더블 버퍼링)(1) (0) | 2015.09.07 |