프로그래밍 관련/Win API

WIndows API - #10-2 그래픽 처리 - (맵핑 - 원점 바꾸기)

QA Engineer - P군 2015. 10. 11. 00:28
반응형

이전 시간에는 윈도우 좌표체계에 대해서 공부해봤습니다.

이번 시간에는 화면에 표시되는 논리좌표(윈도우가 표시되는 좌표)와 물리좌표(화면에 보이는 영역)을 맵핑하는 방법에 대해서 알아보겠습니다.

 

먼저 사각형을 그리도록 하겠습니다. 

 

[결과]


 


예상했던것과 같이 나란히 사각형이 그려졌습니다. 단 , -100 , -100 , 0 , 0 의 그린 사각형의 경우 보이지 않습니다. 

 

 

이제 우리는 이 부분에 대해서 설명할 수 있습니다. 
Rectangle함수를 통해 그리는 좌표는 논리 좌표(윈도우 좌표)이고, 화면상에 보이는 것은 물리 좌표(뷰 포트)의 영역이라는 것을 알 수 있습니다.
그럼 맵핑 함수를 통해 지금은 보이지 않는 사각형을 볼 수 있도록 해보겠습니다.


먼저 맵핑을 하는 함수에 대해서 알아보고 이후에 맵핑 모드에 대해서 알아보겠습니다.

 

SetViewPortOrgEx  

: SetViewportOrgEx 기능은 윈도우의 원점 ( 0, 0 ) 에 매핑 하는 점을 지정합니다.

 

 BOOL SetViewportOrgEx(
_In_  HDC     hdc, _In_  int     X, _In_  int     Y, _Out_ LPPOINT lpPoint );

 

 매개 변수  의미 
 hdc  DC(device context)의 핸들 값을 입력합니다.
 X   새로운 뷰포트 원점의 물리 단위로, x 좌표를 입력합니다.
 Y   새로운 뷰포트 원점의 물리 단위로, y 좌표를 입력합니다.
 lpPoint  이전 뷰포트 원점을 받는 포인트 구조체(POINT struct)에 대한 포인터 입니다.
 해당 값이 NULL일 경우, 이 매개 변수는 사용되지 않습니다.

 

SetWindowOrgEx

: SetWindowOrgEx 기능은 뷰포트의 원점 ( 0, 0 ) 에 매핑 하는 점을 지정합니다.

 
BOOL SetWindowOrgEx( _In_  HDC     hdc, _In_  int     X, _In_  int     Y, _Out_ LPPOINT lpPoint );

 

 매개 변수  의미 
 hdc  DC(device context)의 핸들 값을 입력합니다.
 X   새로운 윈도우 원점의 논리 단위로, x 좌표를 입력합니다.
 Y   새로운 윈도우 원점의 논리 단위로, y 좌표를 입력합니다.
 lpPoint  이전 윈도우 원점을 받는 포인트 구조체(POINT struct)에 대한 포인터 입니다.
 해당 값이 NULL일 경우, 이 매개 변수는 사용되지 않습니다.

이 중에 SetViewPortOrgEx가 많이 사용되게 됩니다.
그럼 SetViewPortOrgEx을 사용해보겠습니다.

 

[결과]
 

SetViewPortOrgEx를 통해 기존에 Origin을 x,y 값을100픽셀씩 당겨서 표시하였습니다.
이제 숨겨졌던 사각형이 보이게 됩니다.

 

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

반응형