Nagie's DevStory

[WIN32 API] 06. 원 그리기 본문

Programming/Win32API

[WIN32 API] 06. 원 그리기

Nagie 2023. 11. 15. 00:13
728x90

Win32 API에서 원 또는 타원을 그리고 싶다면 Ellipse()를 사용하면 된다.

이 함수는 Windows GDI(Graphics Device Interface) 라이브러리에 속하며

wingdi.h에 선언된 Ellipse()를 보면 다음과 같다.

 

BOOL Ellipse(
  HDC hdc,    // 디바이스 컨텍스트 핸들
  int left,   // 왼쪽 상단 모퉁이의 x 좌표
  int top,    // 왼쪽 상단 모퉁이의 y 좌표
  int right,  // 오른쪽 하단 모퉁이의 x 좌표
  int bottom  // 오른쪽 하단 모퉁이의 y 좌표
);

 

각 매개변수는 다음과 같은 역할을 한다.

 

인자 설명
hdc
그림을 그릴 디바이스 컨텍스트 핸들

left, top
원 또는 타원의 왼쪽 상단 모퉁이의 좌표

right, bottom
원 또는 타원의 오른쪽 하단 모퉁이의 좌표

 

다음은 좌표 200,200에서 크기 100,100을 가지는 원을 그리는 코드의 예시다.

 

// 원 그리기
Ellipse(hdc, 200, 200, 300, 300);

 

다 괜찮은데 좌푯값을 기재하는 부분이 직관적이지 못해 필자는 위의 함수를 아래처럼 래핑해서 사용 중이다.

 

void drawCircle(HDC hdc, int startX, int startY, int width, int height) {

    Ellipse(hdc, startX, startY, width + startX, height + startY);
}

 

drawCircle(hdc, 200, 200, 100, 100); //좌표X, 좌표Y, 원의 폭, 원의 높이 순서로 입력

 

위와 같이 래핑을 하게 되면 각 좌표의 차수(差數)만 입력하면 되기에 훨씬 직관적이며

200,200 좌표에 100,100 크기를 가지는 원을 그린다는 의도가 명확하게 전달된다.

728x90
Comments