OS/Windows API

#7 Windows API 선, 사각형, 원 뿌리기

VallistA2014. 8. 26. 11:08

첨부 파일 : 선, 사각형, 원 뿌리기


선, 사각형, 원.zip


이번 시간에는 기틀이 다져졌으니 그전에 배웠던 DC를 사용하여 이미지를 뿌려보도록 하겠습니다.


작업은 모두 Render에서 작업을 하게 되겠습니다.


먼저 간단한 선 업니다.


void CMain::Render(HDC hdc)
{
	//!< 선 뿌리기
	LineTo(hdc, 100, 800);
}

선은 LineTo 라는 함수를 통해서 그릴 수 있습니다.


원형은 


 WINGDIAPI BOOL WINAPI LineTo( _In_ HDC hdc, _In_ int x, _In_ int y);


이렇게 되어 있습니다. 

첫번째 인자에는 HDC 즉 DC를 넣어주시면 됩니다. 두번째 인자는 x, 세번째 인자는 y 입니다.

자 여기서 실행을 해보면 이상한 것을 느낄 수 있으실 것 입니다.


어? 왜 선이 0,0 을 기점으로 x,y 위치까지 그려지지?


바로 그것입니다

우리는 왼쪽 상단이 0,0 이라는 것을 알아두어야 합니다.

왜냐하면 우리가 지금 기점을 0,0으로 잡아두었기 때문에 왼쪽 상단을 기점으로 x,y 위치까지 뿌려지게 됩니다.


그렇다는 소리는 0,0을 바꿀 수 있다는 말인가요?


그렇습니다. 우리는 0,0에서 기준점을 바꿔서 그 기준점 부터 나오도록 할 수 있습니다.

하지만 안타깝게도 LineTo 에서는 지원을 하지 않습니다.

왜냐면 LineTo는 함수 오버로딩이 안되어 있거든요. (C언어와 어셈블리로 짯기 때문에)

그렇기때문에 우리는 다른 함수를 이용해서 변경할 필요성이 있습니다.


한번 찾아보시길 권장합니다.


그 다음, 사각형입니다.

void CMain::Render(HDC hdc) { //!< 사각형 뿌리기 Rectangle(hdc, 300, 300, 500, 500); }

사각형도 상당히 쉽습니다. 말 그대로 Rectangle을 써주시면 되겠습니다.


함수 원형은


 WINGDIAPI BOOL WINAPI Rectangle(_In_ HDC hdc, _In_ int left, _In_ int top, _In_ int right, _In_ int bottom);


요로코놈 이네요.

첫번째 인자도 역시 HDC, DC 넣어주시면 되겠습니다.

두번째 인자와 세번째 인자는 x,y 좌표라고 생각하시면 쉽습니다.

네번째, 다섯번째 인자는 각각 width, height 입니다.


한번 뿌려보시면 감을 잡으실 것 입니다.


그 다음, 원 입니다.

void CMain::Render(HDC hdc) { //!< 원 뿌리기 Ellipse(hdc, 200, 200 , 50, 50); }

원은 Circle이 아니라 Ellipse로 뿌리게됩니다. (낚였음..)


함수 원형은.


 WINGDIAPI BOOL WINAPI Ellipse( _In_ HDC hdc, _In_ int left, _In_ int top,  _In_ int right, _In_ int bottom);


이렇게 뿌리게 됩니다.

첫번째 인자는 역시 똑같습니다.


두번째 , 세번째는 x,y 좌표로 보시면 되겠습니다.

마찬가지도, 동일합니다.


=> 결과



댓글

댓글쓰기 폼

VallistA

병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.

자고 싶습니다. ㅠㅠ

페이스북    :: 링크
카카오톡    :: kingbye1
Github      :: 링크

궁금한점 문의 주시면 답변드리도록 하겠습니다

VISITED

Today : 13

Total : 396,618

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘